调试.net进程时如何查找LastError的值?

调试.net进程时如何查找LastError的值?,.net,visual-studio,debugging,winapi,.net,Visual Studio,Debugging,Winapi,我从.net进程中得到一个异常,该进程正在使用对win32 api函数的互操作调用。 我附加了一个调试器,我想查看LastError的值。 是否可以从Visual Studio调试器中查看LastError的值 注意:引发异常的进程不是我的,我无法修改其源代码以获取LastError的值。 我使用的是VisualStudio2010的测试版,我假设一个适用于VS2008的解决方案将适用于2010 谢谢。试试看“$err”(请参阅)。也可以考虑讨论将“StasListError”添加到您的P/IN

我从.net进程中得到一个异常,该进程正在使用对win32 api函数的互操作调用。 我附加了一个调试器,我想查看LastError的值。 是否可以从Visual Studio调试器中查看LastError的值

注意:引发异常的进程不是我的,我无法修改其源代码以获取LastError的值。
我使用的是VisualStudio2010的测试版,我假设一个适用于VS2008的解决方案将适用于2010

谢谢。

试试看“$err”(请参阅)。也可以考虑讨论将“StasListError”添加到您的P/INVIKE调用中。

< P>您可以调用以获取最后一个Windows API错误消息。这是建议的方法(与使用P/Invoke相反)

从文档中:“GetLastWin32Error从Kernel32.DLL公开Win32 GetLastError API方法。此方法的存在是因为对GetLastError进行直接平台调用以获取此信息是不安全的。如果要访问此错误代码,必须调用GetLastWin32Error,而不是为GetLastError编写自己的平台调用定义并调用它。公共语言运行库可以对API进行内部调用,以覆盖操作系统维护的GetLastError。”

此外,就不修改源而言:

如果p/Invoke调用被修饰为,这将在Visual Studio立即窗口中工作。但是,如果对windows API的p/Invoke调用缺少该属性,您可能会有点运气不佳,因为封送处理API很可能会在您看到GetLastError中的值之前覆盖该值。

Marshall.GetLastWin32Error()-在调试C#…-VS2010 Ultimate时在调试器(监视窗口)中工作