如果使用WINDBG来调试C语言程序.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果使用WINDBG来调试C语言程序.相关的知识,希望对你有一定的参考价值。

我以前使用WINDBG调试过汇编程序,但那个是要先在编译的时候加个/debug参数,现在在用C,不知道怎么来使用WINDBG调试C程序?
在汇编里,调试的时候是打开EXE文件,在C里面时呢?最好能具体点...
弄清楚了我再加300分!!!

参考技术A 在dev里生成dll和调用程序的pdb符号文件,然后把符号文件拷贝到windbg的符号文件目录里
设置好源文件的路径,然后用windbg运行调用程序
然后就可以设断点,跟踪了

具体看windbg的帮助文件,网上也有很多例子
参考技术B 用VC打开CPP文件
按F5自动编译后运行,按CTRL+F5调试
参考技术C 这个就不会。 晕了。 回来问我啊!先给分

windbg怎么查看

1 安装windbg (从微软网站上下载,free), 运行windbg, 设置symbol path,
File- Symbol File Path,
输入SRV*C:\\websymbols*http://msdl.microsoft.com/download/symbols,
如果你已经有了symbo path, 直接输入就可以了。
2. 生成一个dump, 可以用windbg提供的adplus命令来生成,或者有一个简单的工具, IIS
Diagnostics, 这个也可以从微软下, 假设现在你的application hang 或者 crash 了,
运行这个Diagnostics, cancel弹出选择rule type的对话框,
然后选择process tab,
找到你要dump的进程, 右键生成dump就可以了, 然后可以顺便用这个工具直接分析了,还是说winbdg吧。
3. 现在dump有了, 运行windbg,打开这个dump (File- Open
Crash Dump...), 运行下面的几个命令.
.load path\\SOS.dll
(path是全路经,
一般在C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727,
根据自己.net版本选不同的)
.reload -f mscorwks.dll!threads
(察看所有线程(managed),
这步一般就可以看到exception在哪一个线程了, 假设看到在 0 thread)~0s
(转到 0 thread)
!clrstack (查看call stack)
然后可以通过windbg上面的一些快捷功能打开 Process and Threads 窗口 和 call stack
窗口,双击call stack 里面的 function call, 就可以跳转到source code了。
!printException
(查看exception, 仅限于managed exception, 找到第一次被抛出来的exception address,
一看就知道哪个了)
!Printexception address
(查看具体的exception)入门结束,不求甚解,慢慢学习.
参考技术A windbg怎么查看

以上是关于如果使用WINDBG来调试C语言程序.的主要内容,如果未能解决你的问题,请参考以下文章

windbg调试驱动程序

如何使用WinDBG跟踪调试ASL/ACPI

如何使用WinDBG跟踪调试ASL/ACPI

如何使用WinDbg调试进程信息

重启后WinDBG调试

常用的C/C++程序调试工具都有哪些?