Oha*_*esh 4 .net debugging winapi visual-studio
我从.net进程获得一个异常,它使用了对win32 api函数的interop调用.我附加了一个调试器,我想看看LastError的值.是否可以从Visual Studio调试器中看到LastError的值?
两个注意事项:抛出异常的进程不是我的,我无法修改其源代码以获取LastError的值.
我正在使用Visual Studio 2010的测试版我假设适用于VS 2008的解决方案将适用于2010.
谢谢.
您可以调用Marshal.GetLastWin32Error()来获取最新的Windows API错误消息.这是建议的方法(与使用P/Invoke相反).
从文档:"GetLastWin32Error从Kernel32.DLL公开Win32 GetLastError API方法.此方法的存在是因为直接平台调用GetLastError来获取此信息是不安全的.如果要访问此错误代码,则必须调用GetLastWin32Error而不是为GetLastError编写自己的平台调用定义并调用它.公共语言运行库可以对API进行内部调用,覆盖操作系统维护的GetLastError.
另外,在不修改源方面:
这将在Visual Studio立即窗口中工作,前提是P/Invoke调用使用DllImportAttribute.SetLastError进行修饰.但是,如果P/Invoke对Windows API的调用缺少该属性,那么你将有点不幸,因为编组api很可能会覆盖GetLastError中的值,然后才能看到它.
| 归档时间: |
|
| 查看次数: |
2137 次 |
| 最近记录: |