C 语言学习笔记 03 - 调试程序

从这一节开始,我们正式使用先前配置好的项目结构。

调试程序

熟悉 JetBrains 家 IDE 的应该知道,左键代码左侧行号即可对这行代码打下一个「断点」。

列出以下代码: 代码

在循环进行的过程中,如果我们想要了解其中变量的变化,可以将其打印出来。但只了解变量犹如管中窥豹,当我们需要了解代码运行的全过程,就需要用上断点了。

如上文所述,我们左键单击 prinf 对应行数,你会看见一个红点,此时成功打下断点。

接着,按下工具栏的 Debug 按钮,我们会得到以下结果: 调试结果

调试会在运行时通过 LLDB(msvc)/GDB (MinGW/Linux 下) 链接程序并在运行到断点处代码时停止执行,此处我们使用 msvc 进行调试。

此外,我们还可以对获取到的变量进行简单的操作。在 Evaluate expression... 中,我们可以操作变量,例如获取该变量的地址,如图所示: 操作变量

不仅如此,我们还可以通过调试查看编译后的汇编指令。单击 LLDB 输入命令 disas (disassemble),输出反编译后的汇编指令。常见汇编指令类型包括 Intel 与 AT&T,这里不做过多阐述,默认为 AT&T (att)。输出的指令在不同编译器不同环境下结果也会不同。 汇编命令

最后介绍 Memory View,CLion 默认不会输出内容,我们需要手动指定地址跳转。

在 Evaluate expression 中输入 &main 获取 main 函数的地址,右键 result 并点击 Show in memory view (或 Ctrl+Enter) ,我们就能看见 main 函数的 Memory View: Memory View

在 Memory View 中,我们可以通过 Go to 指定变量地址,在继续运行后查看其变化。

至此,基础调试 C 程序的方法已介绍完毕。在下一节中,我们将介绍 C 语言的数据类型。

comments powered by Disqus