zoukankan      html  css  js  c++  java
  • linux下如何用GDB调试c++程序

    [https://www.cnblogs.com/zhoug2020/p/7283169.html]

    进入到测试例子后开gdb
    history命令可以看到前面的cmd

    打印变量的值
    print/p

    打印变量的地址
    print&

    执行下一步
    n/next

    单步进入
    (gdb) step
    这样,也会执行一行代码,不过如果遇到函数的话就会进入函数的内部,再一行一行的执行。

    执行完当前函数返回到调用它的函数
    (gdb) finish
    这里,运行程序,直到当前函数运行完毕返回再停止。例如进入的单步执行如果已经进入了某函数,而想退出该函数返回到它的调用函数中,可使用命令finish.

    设定断点
    break/b
    (gdb) break 46 if testsize100
    这里,如果testsize
    100就在46行处断点。

    检测表达式变化则停住
    (gdb) watch i != 10
    这里,i != 10这个表达式一旦变化,则停住。watch 为表达式(变量)expr设置一个观察点。一量表达式值有变化时,马上停住程序(也是一种断点)。

    在当前的文件中为某一函数(假设为func)处设定断点
    (gdb) break func

    给指定文件(fileName)的某个行(N)处设置断点
    (gdb) break fileName:N
    这里,给某文件中的函数设置断点是同理的

    显示当前gdb断点信息
    (gdb) info breakpoints
    这里,可以简写为info break.会显示当前所有的断点,断点号,断点位置等等。

    删除N号断点
    (gdb) delete N

    删除所有断点
    (gdb) delete

    显示当前调用函数堆栈中的函数
    (gdb) backtrace
    命令产生一张列表,包含着从最近的过程开始的所有有效过程和调用这些过程的参数。当然,这里也会显示出当前运行到了哪里(文件,行)。

    如果a是一个数组,10个元素,如果要显示则
    (gdb) print *a@10
    这样,会显示10个元素,无论a是double或者是int的都会正确地显示10个元素。

    修改运行时候的变量值
    (gdb) print x=4
    这里,x=4是C/C++的语法,意为把变量x值改为4,如果你当前调试的语言是Pascal,那么你可以使用Pascal的语法:x:=4。

    显示一个变量var的类型
    (gdb) whatis var

    以更详细的方式显示变量var的类型
    (gdb) ptype var
    这里,会打印出var的结构定义。

    在terminal调出代码界面
    (gdb)-
    调出当前运行的cc文件页面
    (gdb)up
    (gdb)do(down)
    在代码页面进入上一个/下一个函数
    关掉代码界面用 ctrl +x+a

    报错后显示卡住的当前函数及调用的子函数
    bt

    print和x的区别
    print i
    x &i

  • 相关阅读:
    Git SSH Key 生成步骤
    IOS音频1:之采用四种方式播放音频文件(一)AudioToolbox AVFoundation OpenAL AUDIO QUEUE
    IOS网络篇1之截取本地URL请求(NSURLProtocol)
    IOS 视频直播/智能家居(一行行敲代码,从零开始)lesson:1整体架构
    iOS应用支持IPV6,就那点事儿
    App store最新审核标准公布
    iOS应用内付费(IAP)开发步骤列表
    iOS应用内支付(IAP)的那些坑
    IOS 第三方支付的使用:支付宝
    亲们,委托你们是否已忘记
  • 原文地址:https://www.cnblogs.com/How-Come/p/11050768.html
Copyright © 2011-2022 走看看