从内存地址到源代码行

时间:2011-04-01 02:23:57

标签: c++ debugging windbg

我正在使用WinDBG并拥有以下堆栈跟踪:

ntdll!NtTerminateProcess+0xa
KERNELBASE!TerminateProcess+0x2f
MSVCR90!_invoke_watson+0x11c [f:\dd\vctools\crt_bld\self_64_amd64\crt\src\invarg.c @ 234]
MSVCR90!_invalid_parameter+0x70 [f:\dd\vctools\crt_bld\self_64_amd64\crt\src\invarg.c @ 115]
MSVCR90!fgetpos+0x33 [f:\dd\vctools\crt_bld\self_64_amd64\crt\src\fgetpos.c @ 45]
CleanPayload!DoSomething+0x22 [c:\users\brent.arias\documents\visual studio 2008\projects\samplecpplibrary\cleanpayload\cleanpayload.cpp @ 68]
CleanPayload!main+0x1c [c:\users\brent.arias\documents\visual studio 2008\projects\samplecpplibrary\cleanpayload\cleanpayload.cpp @ 115]
CleanPayload!__tmainCRTStartup+0x11a [f:\dd\vctools\crt_bld\self_64_amd64\crt\src\crtexe.c @ 586]
kernel32!BaseThreadInitThunk+0xd
ntdll!RtlUserThreadStart+0x1d

显然,调试器知道每个堆栈帧指向的代码行,因为它显示了“@”之后的数字。我很高兴我可以在源窗格上点击crtl-l并输入行号,但为什么不能为我这样做呢?有没有办法点击调试窗口并说“在源代码中跳转到这一点”而我不必自己输入?

1 个答案:

答案 0 :(得分:1)

它可以做到这一点,而不是从任何窗口。它适用于Call Stack窗口(Alt + 6) - 双击已映射到代码行的帧,它将使您进入源文件中的行。如果文件当前未在WinDbg中打开,则会打开该文件。