Stack Trace
What is a Stack Trace?
If GnuCash terminates abnormally (i. e. it crashes), then a stack trace is a very helpful information for the developers to figure out the program error that caused this crash.
How to obtain a Stack Trace
Attach gdb to running process
The program "gnucash" itself is not an executable but a script. Therefore it cannot be called directly by the gdb debugger. We propose to "attach" the gdb to the running gnucash process instead.
To attach to the running gnucash process:
- Start gnucash normally
- Use "ps afx" to find out the process number (PID) of the running gnucash process; it might be called "gnucash" or "guile", I'm not sure. Say the PID is 12345.
- Start gdb by typing "gdb"
- Attach to the running process by typing "attach 12345"; gdb will temporarily stop the program
- Continue program execution by typing "continue" at the gdb prompt
- Provoke the crash; type "backtrace" or shorthand "bt" at the gdb prompt to obtain the backtrace.
Please submit the backtrace together with the instructions on how to reproduce this crash as a new bug report into Bugzilla. Thank you for your contribution.
Starting GnuCash under gdb
Sometimes GnuCash might crash too early in the startup sequence such that you cannot attach gdb to the running process. In that case you can run gnucash under gdb. This is much easier as of GnuCash 2.0. To run GnuCash under gdb from the beginning:
- run "gnucash-env gdb gnucash-bin"
- at the gdb prompt, type: "run". Also add your parameters here, like "run --nofile"
- Provoke the crash; type "backtrace" or shorthand "bt" at the gdb prompt to obtain the backtrace.
See also
Other explanations on how to obtain stack traces: