IL级代码调试器
时间:2020-03-05 18:39:15 来源:igfitidea点击:
是否有VS插件或者独立应用程序形式的IL级别调试器?
Visual Studio调试器很棒,但是它允许我们在HLL代码级别或者汇编语言上进行调试,而无法调试IL。
似乎在某些情况下,有机会在IL级别进行调试会很有用。
特别是在调试我们没有源代码的问题时,这可能会有所帮助。
如果没有源,但是无论如何,调试IL是否有用实际上是有争议的。
解决方案
回答
最好的方法是使用ILDASM来分解托管二进制文件,这将生成IL指令。然后,使用ILASM在调试模式下重新编译该IL源代码,当我们启动Visual Studio调试器时,我们将能够逐步处理原始IL。
ildasm foo.exe /OUT=foo.exe.il / SOURCE
ilasm foo.exe.il / DEBUG
我在以下位置撰写了有关该主题的博客文章:
如何调试编译器生成的代码。
回答
ISTR有一个用于Reflector的调试器插件。
我自己不使用它,尽管我已经使用TestDriven.net借助Reflector调试了第三方程序集:
weblogs.asp.net/nunitaddin
回答
这是有关IL调试的文章。它说我们无法做到,然后讨论了做到这一点的方法。评论中也有关于此操作的信息。
回答
Debug Companion VS插件似乎完全是我在寻找的东西,只是它在我的解决方案中看不到库项目。只有当我向解决方案添加控制台赢应用程序时,项目列表中才会出现某些内容。
对我而言,反编译/编译方法的问题在于,我调试的代码不是我的代码。我本来可以反编译它,但我认为没有办法对重新编译的程序集进行签名,以使它可以代替原始程序集被加载。
对于特定的问题,我发现仅在汇编语言级别对其进行调试并获得引发异常的方法的调用堆栈和用于调用该方法的参数就足够了。