我目前正在从转储中调试 Windbg 中的一个问题。我有正确的 pdb,我可以很高兴地查看当地人等。但是,我所拥有的源代码(我从该版本据称来自的 VCS 分支中提取)在我正在查看的堆栈的某些部分中似乎偏离了几行。我以前见过它关闭 1 的实例,但不是 3/4 行。
这是什么原因造成的?有什么明确的方法可以检查我是否有正确的源文件?
您正在查看发布代码的调试版本还是非优化版本?代码优化可能会导致您看到的行移位,因此您应该重新编译/Od C++ 优化设置为“禁用”,看看这是否更正了您看到的内容。
WinDbg 使用与 Visual Studio 相同的方法来检查您正在查看/设置断点的源文件是否与 pdb 匹配,因此它应该警告您(我认为它这样做我无法验证)。
此外,如果不是源文件,您可以使用以下方法验证 pdb:
!itoldyouso myDLL
此外,您可以在步进期间在另一个窗口中打开源文件,它应该在它认为当前调用所在的行处放置一条洋红色线,这应该是正确的并且与 Visual Studio 的行为相同。