发布网友 发布时间:2022-05-03 05:05
共2个回答
懂视网 时间:2022-05-03 09:26
Ctrl+Alt+Delete打开任务管理器-->详细信息-->选择对应的应用名称,右键选择创建转储文件,等待文件创建完成。
选择File>Symbol File Path,设置pdb文件的位置为待调试exe的pdb文件(即testWindbg.pdb)所在位置。内容为:pdb文件和exe文件所在的目录;SRV*e:mysymbol* http://msdl.microsoft.com/download/symbols
路径以‘;‘(分号)为分隔,mysymbol为本地缓存符号的目录
选择File>Source File Path,设置源代码文件的位置为待调试exe的源码文件(即main.cpp)所在位置,即是源代码所在的目录。
选择File>Open Executable,打开待调试exe,若需要外部参数可以填在Arguments中。
1)填入符号表后界面出现 *** ERROR:Symbol file could not be found.Default to export symbols for ntdll.dll
不需要理会,会在后续自动进行加载,使用lm查看加载的模块,会发现已经加载。
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:WindowsSysWOW64RPCRT4.dll -
ModLoad: 00000000`776a0000 00000000`77760000 C:WindowsSysWOW64RPCRT4.dll
1)输入.reload命令重新加载符号
2)输入指令g执行线程(会在程序结束、遇到断点或者其他造成调试器停止的事件发生时停止)
(4ba4.3f94): WOW64 breakpoint - code 4000001f (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
说明: 暗示本程序运行时会有问题。
3)继续执行g
直到按下某个键时,出现定位到某行代码位置(该行代码引起程序崩溃),WinDbg界面会提示崩溃的原因。
1)输入.reload命令重新加载符号
2)使用bp命令设置断点
bp 函数名
bp ‘main.cpp:3‘,在main函数第三行代码处设置断点
bp main+5c,在main函数偏移5c位置设置断点
x 可执行文件名!*char*查找相关函数名后,用bp指令在某个函数设置断点(bp 地址/bp 函数名)
bl 列出当前存在的断点和他们的状态
bc 移除一个或多个断点
bd 暂时禁用一个或多个断点
be 重新启用一个或多个断点
ba 设置数据断点。这种断点在指定内存被访问时触发
br 修改一个已存在的断点的ID
3)g
Breakpoint 0 hit
......
......
说明运行到断点位置
4)单步调试p或F10
5)单步跳入t或F11
6)单步跳出gu或Shift+F11
7)查看变量
dv:局部变量
dv /i:局部变量, 并显示符号的类型和参数类型
dv /V:局部变量, 并显示变量的存储位置.
dt:命令显示局部变量、全局变量或数据类型的信息。它也可以仅显示数据类型。即结构和联合(union)的信息
dv tt
dt tt
db:查看某个内存的字节值和ASCII字符
dc:命令查看查看某个内存的双字值和ASCII字符
du:命令查看Unicode字符
WinDbg单机调试
标签:外部 指令 expect download com dll 全局变量 状态 自动
热心网友 时间:2022-05-03 06:34
windbg有个debug下拉菜单,这个菜单里面有个Event filters选项,对这里面的进行设置就能过掉相应的调试事件了。