Jump to content

Guidelines and HOWTOs/Debugging/MS Windows: Difference between revisions

From KDE Community Wiki
Jstaniek (talk | contribs)
No edit summary
Jstaniek (talk | contribs)
No edit summary
Line 1: Line 1:
{{improve}}
{{improve}}


=General Hints=
==Debugging with DebugView==
==Debugging with DebugView==
Debug messages (logs) generated by kDebug() and kWarning() are not visible on MS Windows unless application is compiled in so-called CONSOLE subsystem. To show these messages also in WINDOWS subsystem, you can use DebugView tool, coming from SysInternals (currently acquired by Microsoft). The tool offers searching in logs, filtering and saving them to file.
Debug messages (logs) generated by kDebug() and kWarning() are not visible on MS Windows unless application is compiled in so-called CONSOLE subsystem. To show these messages also in WINDOWS subsystem, you can use DebugView tool, coming from SysInternals (currently acquired by Microsoft). The tool offers searching in logs, filtering and saving them to file.
Line 6: Line 7:
→ [http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx More informations]
→ [http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx More informations]


= MS Visual Studio hints =
== Using MS Visual Studio environment for just debugging ==
Let's assume you're using command line tools (typically SCons) and want to use MS Visual Studio environment for just debugging.
You don't need to create msvc project for your KDE application to be able to start debugging.
* compile and working executable version of your appliation (compiled in debug mode)
* run msvc environment
* execute ''File->Open project''
* pick your exe file in the file window
* you can set command line arguments as usual, by pick ''Project->...Properties'' command and enter all of them it in ''Command Arguments'' field
* if you have libraries placed in other directories than your application's .exe file, and you want to step into these libraries' source code while debugging, pick ''Project->...Properties'' command and enter paths to these directories in ''Symbol Path'' field
* hit F5 to run the application start the application or F10 to start step by step
* all debugging functions like setting breakpoints will be available, so you can open source code in the integrated editor and press F9 where needed
* you can even edit your source code but to compile it, do it with your external, command line tools. You cannot compile the application in the msvc environment because you have not defined a project file
* before compiling your application, stop debugging session to unlock binaries; no need to close msvc window
* after compilation you can start debugging again
* on exit you will be asked to save .sln file (so-called ''solution file'') with your debugging session -- do it and you will be able just to click the .sln file to start your debugging again
* it's recommended to save the .sln file in the .exe file directory
* next time you will run msvc environment, you can see name of your application's .sln file in ''File->Recent Projects'' submenu - you can click it to load your debugging session
== Attaching to running application ==
If you have your application is already running, you can attach to it and then start debugging.
* run msvc environment
* execute ''Debug->processes''
* select your from the processes list and click "Attach..."
* msvc environment will load your .sln file if it exists in the same directory as the .exe file, so your breakpoints set in previous session will be active again
* your program will stop on any breakpoint you have set
== One-step attaching to running application ==
You can create a macro that automates the task. See [http://blogs.msdn.com/jimgries/archive/2005/11/30/498264.aspx].
== Memory Values ==
If you are using the debug heap, memory is initialized and cleared with special values. Most interesting values are:
* 0xCDCDCDCD - Allocated in heap, but not initialized
* 0xDDDDDDDD - Released heap memory.
* 0xFDFDFDFD - "NoMansLand" fences automatically placed at boundary of heap memory. Should never be overwritten. If you do overwrite one, you're probably walking off the end of an array.
* 0xCCCCCCCC - Allocated on stack, but not initialized
See also: [http://www.samblackburn.com/wfc/technotes/WTN006.htm]
= MinGW hints =
* Dr. Mingw - Just in Time Debugger [http://jrfonseca.planetaclix.pt/projects/gnu-win32/software/drmingw/]
* Debugging Qt programs on Windows [http://lists.trolltech.com/qt-interest/2005-08/thread01124-0.html]




[[Category:MS Windows]]
[[Category:MS Windows]]

Revision as of 15:17, 15 September 2007

Warning

This section needs improvements: Please help us to

cleanup confusing sections and fix sections which contain a todo


General Hints

Debugging with DebugView

Debug messages (logs) generated by kDebug() and kWarning() are not visible on MS Windows unless application is compiled in so-called CONSOLE subsystem. To show these messages also in WINDOWS subsystem, you can use DebugView tool, coming from SysInternals (currently acquired by Microsoft). The tool offers searching in logs, filtering and saving them to file.

More informations

MS Visual Studio hints

Using MS Visual Studio environment for just debugging

Let's assume you're using command line tools (typically SCons) and want to use MS Visual Studio environment for just debugging. You don't need to create msvc project for your KDE application to be able to start debugging.

  • compile and working executable version of your appliation (compiled in debug mode)
  • run msvc environment
  • execute File->Open project
  • pick your exe file in the file window
  • you can set command line arguments as usual, by pick Project->...Properties command and enter all of them it in Command Arguments field
  • if you have libraries placed in other directories than your application's .exe file, and you want to step into these libraries' source code while debugging, pick Project->...Properties command and enter paths to these directories in Symbol Path field
  • hit F5 to run the application start the application or F10 to start step by step
  • all debugging functions like setting breakpoints will be available, so you can open source code in the integrated editor and press F9 where needed
  • you can even edit your source code but to compile it, do it with your external, command line tools. You cannot compile the application in the msvc environment because you have not defined a project file
  • before compiling your application, stop debugging session to unlock binaries; no need to close msvc window
  • after compilation you can start debugging again
  • on exit you will be asked to save .sln file (so-called solution file) with your debugging session -- do it and you will be able just to click the .sln file to start your debugging again
  • it's recommended to save the .sln file in the .exe file directory
  • next time you will run msvc environment, you can see name of your application's .sln file in File->Recent Projects submenu - you can click it to load your debugging session

Attaching to running application

If you have your application is already running, you can attach to it and then start debugging.

  • run msvc environment
  • execute Debug->processes
  • select your from the processes list and click "Attach..."
  • msvc environment will load your .sln file if it exists in the same directory as the .exe file, so your breakpoints set in previous session will be active again
  • your program will stop on any breakpoint you have set

One-step attaching to running application

You can create a macro that automates the task. See [1].

Memory Values

If you are using the debug heap, memory is initialized and cleared with special values. Most interesting values are:

  • 0xCDCDCDCD - Allocated in heap, but not initialized
  • 0xDDDDDDDD - Released heap memory.
  • 0xFDFDFDFD - "NoMansLand" fences automatically placed at boundary of heap memory. Should never be overwritten. If you do overwrite one, you're probably walking off the end of an array.
  • 0xCCCCCCCC - Allocated on stack, but not initialized

See also: [2]

MinGW hints

  • Dr. Mingw - Just in Time Debugger [3]
  • Debugging Qt programs on Windows [4]