|
|
|
|
|
|
|
WinDbg
帖子发起人: 初学 发起时间: 2014-06-28 15:08 下午 回复: 4
|
帖子排序:
|
|
|
|
2014-06-28, 15:08 下午
|
初学
注册: 2014-06-26
发 贴: 4
|
用windbg调试一个简单的c++程序,bp设置断点不成功,很奇怪的错误提示
|
|
|
|
我用visual c++2012写了个很简单的程序
int _tmain(int argc, _TCHAR* argv[]) { int i=2; ++i; int j=3; ++j; return 0; }
编译以后,debug版的exe和pdb目录都在这个目录: C:\Users\a\Documents\Visual Studio 2012\Projects\ConsoleApplication1\Debug
然后我启动windbg(6.12.002.633.X86),Ctrl+E来打开一个可执行程序ConsoleApplication2.exe,然后观察.sympath/.srcpath都已经有了: 但是我试图设置断点的时候,就提示我Symbol文件找不到
CommandLine: "C:\Users\a\Documents\Visual Studio 2012\Projects\ConsoleApplication1\Debug\ConsoleApplication2.exe" Symbol search path is: C:\Users\a\Documents\Visual Studio 2012\Projects\ConsoleApplication1\Debug Executable search path is: ModLoad: 012c0000 012e3000 ConsoleApplication2.exe ModLoad: 77030000 7716c000 ntdll.dll ModLoad: 75400000 754d4000 C:\Windows\system32\kernel32.dll ModLoad: 750c0000 7510b000 C:\Windows\system32\KERNELBASE.dll ModLoad: 56ad0000 56b9b000 C:\Windows\system32\MSVCP110D.dll ModLoad: 0f0a0000 0f241000 C:\Windows\system32\MSVCR110D.dll (8d0.a88): Break instruction exception - code 80000003 (first chance) eax=00000000 ebx=00000000 ecx=002ff598 edx=770770f4 esi=fffffffe edi=00000000 eip=770d05a6 esp=002ff5b4 ebp=002ff5e0 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246 *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll - ntdll!LdrVerifyImageMatchesChecksum+0x633: 770d05a6 cc int 3
0:000> .sympath Symbol search path is: C:\Users\a\Documents\Visual Studio 2012\Projects\ConsoleApplication1\Debug Expanded Symbol search path is: c:\users\a\documents\visual studio 2012\projects\consoleapplication1\debug 0:000> .srcpath Source search path is: C:\Users\a\Documents\Visual Studio 2012\Projects\ConsoleApplication1\ConsoleApplication2
0:000> bp 'ConsoleApplication2:12' 0:000> g Unable to insert breakpoint 1 at 323a3132, Win32 error 0n299 "仅完成部分的 ReadProcessMemory 或 WriteProcessMemory 请求。" The breakpoint was set with BP. If you want breakpoints to track module load/unload state you must use BU. bp1 at 323a3132 failed WaitForEvent failed eax=00000000 ebx=00000000 ecx=002ff598 edx=770770f4 esi=fffffffe edi=00000000 eip=770d05a7 esp=002ff5b4 ebp=002ff5e0 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246 ntdll!LdrVerifyImageMatchesChecksum+0x634: 770d05a7 8975fc mov dword ptr [ebp-4],esi ss:0023:002ff5dc=00000000
看起来我的.sympath/.srcpath都没有错,为什么bp命令会失败? 提示的"仅完成部分的 ReadProcessMemory 或 WriteProcessMemory 请求。"是什么意思?
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2014-06-29, 21:38 下午
|
初学
注册: 2014-06-26
发 贴: 4
|
Re: 用windbg调试一个简单的c++程序,bp设置断点不成功,很奇怪的错误提示
|
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2014-06-29, 21:52 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
Re: 用windbg调试一个简单的c++程序,bp设置断点不成功,很奇怪的错误提示
|
|
|
|
仔细看下帮助文件,或者找本书看看,注意bp的参数格式
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2014-06-30, 22:49 下午
|
初学
注册: 2014-06-26
发 贴: 4
|
Re: 用windbg调试一个简单的c++程序,bp设置断点不成功,很奇怪的错误提示
|
|
|
|
OK, 我给bp命令加上了单引号,但是还是不行: (1)从lm命令的结果来看,ConsoleApplication2的start/end分别是00a80000/00aa3000 (2)bp命令成功执行了,但是bl命令列出的断点地址是703a3131,看起来这个无效地址。这是为什么呢? 源代码-------------------------------------------------------------------------------------------------------- // ConsoleApplication2.cpp : Defines the entry point for the console application. //
#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int i=2; ++i; int j=3; ++j; return 0; } Windbg------------------------------------------------------------------------------------------------------- 0:000> bp 'ConsoleApplication2.cpp:11' 0:000> bl 0 e 703a3131 0001 (0001) 0:**** 0:000> lm start end module name 00a80000 00aa3000 ConsoleApplication2 C (private pdb symbols) C:\Users\a\Documents\Visual Studio 2012\Projects\ConsoleApplication1\Debug\ConsoleApplication2.pdb 0f710000 0f8b1000 MSVCR110D (deferred) 0fb70000 0fc3b000 MSVCP110D (deferred) 751e0000 7522b000 KERNELBASE (deferred) 758c0000 75994000 kernel32 (deferred) 76f70000 770ac000 ntdll (pdb symbols) c:\symbols\ntdll.pdb\CD4062A231154A17A18DAE7D1A0FBACC2\ntdll.pdb
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 软件调试 » WinDbg » Re: 用windbg调试一个简单的c++程序,bp设置断点不成功,很奇怪的错误提示
|
|
|
|
|
|