Difference between revisions of "Windows Debugging"

From Apache OpenOffice Wiki
Jump to: navigation, search
m (updated link to sysinternals tools)
Line 32: Line 32:
== Other useful stuff ==
== Other useful stuff ==
* [http://www.sysinternals.com/Utilities/ProcessExplorer.html Process Explorer]
* [http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx Process Monitor]
* [http://www.sysinternals.com/Utilities/Filemon.html Filemonitor]
[[Category:Development|Debugging on Windows]]
[[Category:Development|Debugging on Windows]]

Revision as of 13:10, 25 March 2010

This is Windows-specific debugging information. There are also generic notes on Debugging.

General notes

You want to debug soffice.bin, as soffice.exe loads that in a separate process. You can copy soffice.bin to sofficebin.exe if it has to be called ".exe" for your debugger.

Debugging with Visual Studio

Debugging a non-debug exe

Problems tend to raise exceptions, you want to catch them before the exception happens. Run sofficebin.exe in the debugger and look at the Output window. Exceptions look like this:

First-chance exception at 0x7c81eb33 in sofficebin.exe: Microsoft C++ exception: com::sun::star::uno::RuntimeException @ 0x00e1e690.

0x7c81eb33 is the address of the instruction following the call to raise the exception. Go to this address in the disassembler, find the instruction before (which will be a call instruction), and set a break point there.

Then when an exception occurs, you can see in the call stack where it is coming from.

Visualizers for STL containers

See VisualStudioVisualizer for examples how to "visualize" the contents of STL containers and iterators in the Visual Studio debugger.

Debugging with gdb

This is currently not working. Trying to debug soffice.bin ends up with a segmentation fault. Any suggestions appreciated!

Stderr and stdout

Using normal command-line in Windows, you cannot see the standard out or standard error. The trick is to start OOo (soffice.exe) from cygwin. You can easily pipe stderr (soffice.exe 2> log.txt) or stdout (soffice.exe >log.txt) to a file.

Other useful stuff

Personal tools