CLion教程-反汇编视图
在CLion中,您可以打开反汇编的代码:
- 当源代码可用时,可以根据需要为任何帧打开。
- 当源代码不可用时,可以通过强制步入来进行。
为帧打开反汇编视图
- 在调试工具窗口中右键单击所需的帧,然后选择“反汇编”:
反汇编视图将会与源代码并排打开:
- 一旦打开,反汇编视图将与当前选择的帧保持同步。当切换帧时,编辑器和反汇编视图都会滚动到执行点。
下面描述的所有调试操作都适用于这个并排视图,但CLion目前不会在源文件和反汇编视图之间同步断点。
当源不可用时打开反汇编视图
调试代码时,使用“强制步入” AltShiftF7 命令,而不是“步入” F7。对于没有源代码的函数,“步入”操作类似于“步过”。
- 在调试期间,如果CLion无法定位源文件,它会自动打开反汇编视图。这可能会在以下情况下发生,例如,当您使用伪CMake项目调试自定义可执行文件时,或者在没有源代码的情况下构建了一个库。
- 若要明确指定源文件,请单击通知中的“选择文件”:
- 在调试工具窗口中导航到所需的帧。
- 当启动不提供调试信息的附加进程的调试会话时,反汇编也会自动打开。
在反汇编中逐步执行
在反汇编视图中,您可以使用常规的步进操作来调查代码。
在反汇编和原始源代码中进行步进的行为不同:尽管调试器总是逐行步进,但源代码中的一行通常包含多条指令,而反汇编中的一行始终对应一条指令。
您还可以使用设置执行点操作来跳转到反汇编中的任意代码行:
反汇编中的断点
您可以像在源代码中一样在反汇编中设置断点。这些断点称为地址断点。
右键单击断点以查看可用的选项:
单击“更多”或按Ctrl+Shift+F8
以在断点对话框中编辑地址断点:
当停止调试会话时,地址断点会自动删除,因为大多数情况下,下次启动时地址布局会发生变化。这与监视点类似。
转到地址
使用“转到”字段可以跳转到所需的代码行。在此字段中,您可以输入地址或可以评估为地址的任何表达式。
如果需要包括寄存器到表达式中,请以$
开头(GDB表示法)。
在使用LLDB进行调试时,在“转到”字段中使用寄存器需要明确转换为地址。例如,
(void *)($pc + 0x8)
。
汇编文件的语法高亮
AT&T汇编代码支持语法高亮显示。
默认情况下,.s 和 .asm 文件会被识别为汇编代码文件,但您可以配置其他类型:
- 转到设置 | 编辑器 | 文件类型。
- 在识别的文件类型列表中选择汇编语言,并添加新的扩展名到列表中。