使用.call
似乎可以调用本机函数(从未实际尝试过它)。是否有一个类似的命令用于调用.NET函数到mimic this result?
我正在寻找WinDbg解决方案。我知道Visual Studio有立即窗口,其他工具如Hawkeye可以调用事件处理程序,也许Snoop也可以调用方法。
答案 0 :(得分:7)
简短的回答是否定的。
问题是您无法在任意线程上运行托管代码。即使你处于良好的线程,它也很容易导致垃圾收集,终结器等问题。
在过去,我们尝试创建一个本机入口点,然后调用托管代码。它很混乱,并且在需要的时候没有很好的工作时间。
编辑:
.call
通过将一堆东西推入堆栈,跳转到入口点,然后继续执行(所有在当前选定的线程上)来工作。不幸的是,WinDbg本身并不了解托管代码,它如何与系统交互,或者如何安全地调用它。 Visual Studio调试器(它是一个非常不同的调试引擎)知道托管代码以及如何干净地执行方法。