Linux/macOS 下编译运行代码及gdb编译工具使用指南

Linux/macOS 下编译运行代码及gdb编译工具使用指南

  • 终端编译运行方法(以cpp为例)
    • 用快捷键Ctrl+ Alt+ T打开终端, 使用cd命令定位到代码所在文件夹。也可以直接在代码所在文件夹中右键鼠标,然后选择打开终端(open terminal)
    • 在终端中输入编译命令: g++ [代码文件名] -o [生成可执行文件名] -g -std=c++11
    • 在终端中输入命令运行编译出来的可执行文件: ./[可执行文件名] 例如要编译运行位于路径 c o n t e s t c o d e contestcode contestcode 下的名为 a . c p p a.cpp a.cpp的代码:
      cd contesttode
      g++ a.cpp -o a -g -std=c++11(由于默认生成文件名为a.out的可执行文件,使用**-o参数后面街上文件名就表示指定生成的文件名,-g**表示将要调试)
      在运行程序的过程时,可以在终端中使用快捷键Ctrl + C来提前终止程序的执行
  • 使用gdb工具调试程序的方法:
    • 使用上述编译方法将.cpp文件编译成可执行文件
    • 在终端中输入命令 gdb[可执行文件名] 来进入gdb界面

      例如要调试代码a.cpp,假设已经将它编译成了可执行文件 a
      gdb a
      (注意、每次修改代码后都需要重新编译,才能用gdb调试新的代码)

  • 进入gdb界面后就可以使用gdb的命令来调试程序,常用的gdb命令如下:
    • 运行代码: r, 代码会从头开始运行直至代码结束或是遇到第一个断点
    • 在代码的某一行设置断点: b [行号]
    • 删除断点: del [断点编号] 断点从1开始编号,当一个断点设置成功后gdb会在屏幕上给出它的编号
    • 继续执行: c, 此时代码会从停下的位置继续执行,直到程序结束或是遇到下一 个断点
    • 单步执行(跳过函数): n, 跳转到下一行代码而不进入函数内部
    • 单步执行(进入函数): s, 跳转到下一行代码,若当前行中有函数调用,则进入函数内部
    • 输出某个变量的值: p [变量名],在屏幕上显示出变量当前的值
    • 跟踪某个变量的值: disp [变量名], 将变量添加到追踪表中,之后代码再执行时就会自
      动的将这些变量的值显示在屏幕上
    • 显示现在追踪的所有变量的信息: disp
    • 解除输出变量大小限制: set max-value -size unlimited, (例: 输出大数组)
    • 删除对某个变量的跟踪 del dis [追踪变量编号].编号从1开始,会在添加成功后显示在屏幕上
    • 监视某个变量的变化: watch [变量名] 在该变量当前值发生变化的地方设置断点,代码
      开始运行后才能使用
    • 删除对某个变量的监视: del [监视变量编号],编号规则同上
    • 显示堆栈信息: bt, 在屏幕上输出当前堆栈中的信息
    • 退出gdb界面: q
    • 无其他输入,直接回车会执行上一条命令
    • 执行时,如果当前行开头有(gdb) 字样,说明系统正等待gdb命令,否则说明程序正在运行或者等待程序本身的输入
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值