zoukankan      html  css  js  c++  java
  • Linux gdb调试器

    gdb的启动
    --gdb 程序名 [corefile]
    --corefile是可选的,但能增强gdb的调试能力
    --强调:启动gdb必须在编译命里加上"-g"参数,"-g"一般写在遍历命令的靠前位置,例如--gcc -Wall -g -o hello.o -c hello.c
    "-q"命令
    --命令格式:gdb -q 执行程序
    --不显示gdb版本信息
    gdb命令集合
    --直接运行调试命令 gdb 程序名
    --"run"
      开始调试程序
    --"where"
      显示导致段错误的执行函数树
    --"list[m,n]"
      m,n是要显示包含错误首次出现位置的起始行和结尾行。不带参数的list命令将显示附近的10行代码
    --"print"
       print 变量,表达式
       print 'filename'::变量或表达式    --''是必须的,以便让gdb知道指的是一个文件名。 
       print funcname::变量或表达式
    --"whatis"
       告诉你变量的类型
    --"ptype"
       告诉你结构的定义
    --"break"
       设置断点
       break linenum(行号)
       break funcname(函数名)
       break filename:linenum
       break filename:funcname
    --"continue"
       从断点以后继续执行,并非单步
    --"delete"
       删除一个端点
       语法格式:delete 断点编号
       断点编号是由"info break"获取的
    --"info break"
       查看已设置断点的信息
    --"set variable"
       命令格式是:set variable varname=value
       varname是变量名称,value是变量的新值
    gdb单步调试
    --"step"
        当遇到一个函数的时候,step将进入函数,每次执行一条语句,相当于vs中的F10命令
    --"next"
        当遇到一个函数的时候,next将执行整个函数,相当于vs中的F5命令
    --"return "
        相当于在函数中直接return ,并且将value作为返回值返回给调用者。
    --如果需要重复执行一条命令,不需要每次都键入命令,gdb记住了最后一个被执行的命令,只要简单的按
    enter键就可以重复执行最后的命令
    gdb调试带参数的程序
    进入gdb调试界面
    输入参数命令set args 后面加上程序所要用的参数,注意,不再带有程序名,直接加参数,如:
    set args a.txt b.txt
    回车后输入 run
    gdb多文件调试
    如果调试的文件不在当前目录下,需要将文件目录加载到程序中,如果在当前目录下不需要加载目录
    --命令行    "DIR ../common"
    在文件中添加断点
    --命令行    "bread helper.c:68"    在helper.c文件的第68行加断点
    跳出循环:
    until LineNum  
    执行到一个比当前行号大的行,或者也可以指定在当前frame中的某一行
    
    跳出函数:
    finish     
    执行,直到选定的frame执行结束,然后打印返回值,将其放入历史值中,停止
    gdb多线程调试
    在多线程编程中,经常会遇到死锁问题,这时候需要使用pstack命令来查看线程在哪个函数中锁住了
  • 相关阅读:
    【转】彻底解决matplotlib中文乱码问题
    angularjs依赖注入,setInterval()功能
    【转】图解SQL的各种连接join
    关于c#调用matlab时,deploytool选项没有.NET Assembly的问题的解决
    SQL从其他服务器数据库导入数据到本地数据库中
    【转】Asp.net下载文件、文件流输出 直接输出文件
    【转】正则应用实例,如将多个空格改为1个空格
    【转】线程间操作无效:从不是创建控件 的线程访问它,解决办法
    js获取鼠标坐标,设置div的高度、位置、内容等,及注意要点
    Java线程阻塞的方法
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5775591.html
Copyright © 2011-2022 走看看