当前位置:  开发笔记 > 开发工具 > 正文

如何在Visual Studio中调试时执行GetLastError()

如何解决《如何在VisualStudio中调试时执行GetLastError()》经验,为你挑选了2个好方法。

您正在单步执行C/C++代码,并且刚刚调用了失败的Win32 API(通常通过返回一些无用的通用错误代码,如0).您的代码不会进行后续的GetLastError()调用,您可以检查其返回值以获取更多错误信息.

如何在不重新编译和重现故障的情况下获得错误值?在Watch窗口中输入"GetLastError()"不起作用("语法错误").



1> Michael Burr..:

如前所述,@err伪寄存器将显示最后一个错误值,并将@err,hr错误显示为字符串(如果可以).

根据Visual Studio团队成员Andy Pennell的说法,从VS 7开始(Visual Studio .NET 2002),使用'@'字符表示伪寄存器已被弃用 - 他们更喜欢使用'$'(如$err,hr) .暂时支持$和@.

您还可以在条件断点中使用$ err伪寄存器; 因此,只有在最后一个错误为非零时才能中断一行代码.这可能是一个非常方便的技巧.

您可能会发现其他一些伪寄存器(来自John Robbins的优秀书籍"Microsoft .NET和Microsoft Windows调试应用程序"):

$tib - 显示线程信息块

$clk - 显示时钟计数(对计时功能有用).为了更方便地使用它,请放置一块$clk手表,然后再放一块$clk=0手表.第二个监视器将在显示当前值后清除伪寄存器,因此下一步或步骤将为您提供仅执行该操作的时间.请注意,这是一个粗略的时序,包括相当多的调试器开销,但它仍然非常有用.


嘿 - 搞笑.我认为原因是他们试图使VS调试器与WinDbg及其堂兄ntsd/cdb保持一致.

2> QBziZ..:

ERR,hr 在观察窗口通常可以做到这一点


将它改为@ err,hr,你就是金色的.
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有