FAQ
Contents
- Why Nemiver is slow to step through?
- Some variables of your program are not displayed by nemiver
- Nemiver doesn't work, '&"Cannot create process: Permission denied\n"' error is printed on the Target Terminal
- How to make Nemiver use a GDB that I have compiled
- Why isn't there a UI to make Nemiver use the GDB that I have compiled
- Is there an easy way to compile Nemiver on my distro?
1. Why Nemiver is slow to step through?
This problem can be noticed when stepping into a function (usually a function defined in an external library), and gdb would grind away for several tens of seconds at 100% cpu before it finally arrived at the next instruction. Such problem seems to appear only on debian-based system (like Ubuntu).
Installing libc6-dbg solves this problem.
2. Some variables of your program are not displayed by nemiver
This problem usually happens because you compiled the program you are debugging with optimisations on. If the program you are compiling is using the autotools for instance, great chances are that typing
make
will compile your program with optimisation options like -O2 turned on.
To solve this please recompile the program WITHOUT optimization, by typing
make CFLAGS=-g clean all make install
Please do note that this will compile your program with the -g option on, AND WITHOUT optimisations. Another nice side effect of switching optimisation off during development is that compilation is then faster.
3. Nemiver doesn't work, '&"Cannot create process: Permission denied\n"' error is printed on the Target Terminal
This means that SELinux boolean deny_ptrace is enabled, which prevents all processes on the system from ptrace'ing other processes on the system, including user processes. The ptrace and sys_ptrace access allows one process to read the memory of another process, which is exactly what debuggers need. For more information about SELinux deny_ptrace boolean, read this LWN article.
To turn off this protection, execute:
sudo setsebool deny_ptrace=0
4. How to make Nemiver use a GDB that I have compiled
Once you've compiled your version of version of GDB and installed it to /path/to/your/gdb, you can make Nemiver use it by setting a gconf key:
gconftool-2 --set --type string /apps/nemiver/dbgperspective/gdb-binary /path/to/your/gdb
5. Why isn't there a UI to make Nemiver use the GDB that I have compiled
Because nobody had the time to write that UI yet. Well. That code has been written now but it hasn't been released yet. Try nemiver from the master git repository to enjoy it.
6. Is there an easy way to compile Nemiver on my distro?
The most difficult part is to get all the dependencies installed. On Fedora and Debian based distributions though, that part is easy:
- On Fedora:
yum-builddep nemiver
- On Debian based distributions
apt-get build-dep nemiver
Now you just need to checkout the source code, configure it, compile it, and install it:
git checkout git://git.gnome.org/git/nemiver nemiver.git cd nemiver.git ./autogen.sh make sudo make install.
Then, to debug <your-program>, type:
nemiver <your-program>