Debugging 有没有一种方法可以在vscode中使用编译到的asm逐步遍历锈迹代码? 几十年前,通过查看与程序集交错的调试器中编译的代码,我学到了很多关于C、C++和汇编的内容。

Debugging 有没有一种方法可以在vscode中使用编译到的asm逐步遍历锈迹代码? 几十年前,通过查看与程序集交错的调试器中编译的代码,我学到了很多关于C、C++和汇编的内容。,debugging,assembly,visual-studio-code,rust,arm64,Debugging,Assembly,Visual Studio Code,Rust,Arm64,我现在正在学习新的M1 Mac上的锈迹,并希望做同样的事情。我特别想了解零成本抽象的工作情况。但我不擅长生锈或手臂装配 我使用的是VSCode,我找不到任何方法可以看到锈迹和装配交错,就像我以前在Amiga和486 PC上看到的那样 通过谷歌搜索,我可以找到方法让rustc生成asm,但它没有Rust代码,而且很难理解,尤其是在我还不知道的asm方言中 我知道我可以在Godbolt上看到Rust和它编译的asm并排出现,这太棒了。但我想看看我的整个应用程序的代码,并逐步完成它。这是可能的吗?顺便

我现在正在学习新的M1 Mac上的锈迹,并希望做同样的事情。我特别想了解零成本抽象的工作情况。但我不擅长生锈或手臂装配

我使用的是VSCode,我找不到任何方法可以看到锈迹和装配交错,就像我以前在Amiga和486 PC上看到的那样

通过谷歌搜索,我可以找到方法让
rustc
生成asm,但它没有Rust代码,而且很难理解,尤其是在我还不知道的asm方言中


我知道我可以在Godbolt上看到Rust和它编译的asm并排出现,这太棒了。但我想看看我的整个应用程序的代码,并逐步完成它。这是可能的吗?

顺便说一句,我意识到与高级语言相比,优化器可以从根本上重新安排asm。那也是当时的情况,这只是我们所知道的一个限制,它并没有完全阻止交错asm。我在发布后才发现VSCode有LLDB:Toggle反汇编和LLDB:Show反汇编命令。这很有帮助,可以显示当前执行的位置,并且只显示当前函数,但它不是交错的。显然,在拆分视图中,可以一边显示锈迹,另一边显示asm。但它们没有对齐,只有asm一方通过。asm确实有评论说它们与哪一条锈迹有关,这使它看起来很有可能。现代编译器可能比486天时更具攻击性,尤其是amiga。通常情况下,交错源代码和asm会更加混乱,而不是更少,因为执行似乎在源代码行之间来回跳跃。(所以同一个源代码行可能必须重复。)尽管您可以使用一些静态工具(如GNU Binutils
objdump-d
)来实现这一点。我假设
llvm objdump
(可能作为objdump安装在MacOS上)也有类似的选项。不过,如果您想了解源代码与asm的一致性,我强烈建议您使用。解释如何使用它(用C/C++示例,但是编写函数,使用ARG并返回值在锈中工作,这样就可以使编译器在不优化常数的情况下做一些事情。也就是说,让ASM看起来很有趣。)