我正在使用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并输入行号,但是为什么它不能为我做呢?有没有一种方法可以单击调试窗口并说出“跳到源代码中的这一点”,而无需我自己键入它?
最佳答案
它可以做到这一点,只是不能从任何窗口进行。它可以在“调用堆栈”窗口(Alt + 6)中工作-双击已映射到代码行的框架,它将使您进入源文件中的行。如果当前未在WinDbg中打开文件,它将打开文件。