繁体   English   中英

如何在Visual Studio(而不是MSIL)中查看C#的汇编代码?

[英]How to view the Assembly code for C# in Visual Studio (not the MSIL)?

此视频中 (8:20)显示C#代码的汇编代码。 它没有告诉如何显示它(我听到的只是按F11,但它对我不起作用),也许它不适用于Visual Studio的Express版本?

所有这些答案都存在问题。

如果您的MSVC版本支持它,您确实可以在Debug / Disassembly窗口中看到汇编程序指令(仅在主动调试应用程序时可用)。

但是,jit编译器会检测您何时尝试在调试器下运行它。 因此,即使您正在进行发布版本,它仍然与您从命令行运行的发布版本完全相同。

从好的方面来说,调试会更容易。 从负面来看,它使.Net编译器看起来非常糟糕,因为代码不像“真实”运行时那样高效。

有一个技巧我用来看'真正的'汇编程序输出。 在MSVC中,使用CTRL-F5(无需调试启动)启动应用程序。 然后使用Debug / Attach to Process来...嗯...附加到进程。

您现在可以使用调试器中断该过程并检查“真实”asm输出。 实际调试将更加困难,因为代码已经进行了更多优化,但是反汇编窗口将让您更好地了解jit编译器的工作情况。

我确定有一种方法可以用NGEN做这个(也许这个 ?),但只是附加对我来说效果很好。

在菜单中选择Debug - Windows - Assembly。 如果Express Edition中没有该菜单,那么是的,它不受支持。

您正在寻找的窗口是Debug - > Windows - > Disassembly

你必须调试它才能存在,并且在连接调试器时你可以按Ctrl + Alt + D来实现它。

您无法在任何其他时间查看汇编代码(机器代码),因为它不存在。 它作为机器代码存在的唯一时间是加载和运行时。 .Net不编译为机器代码,它编译为MSIL,因此必须在它出现之前进行JIT编译(及时)。 只有在它运行时才会发生。

如此处所述您应该运行代码并在断点处停止然后调试 - > Windows - >反汇编或Ctrl + Alt + D


如果不存在,则应打开选项Dialog并将Address-leve debugging设置为启用 在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM