• 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命令来查看线程在哪个函数中锁住了
  • 相关阅读:
    数据存储过程学习
    Python实现目录文件扫描功能
    python关于邮件发送包smtplib的实践分享
    Java自学笔记之学生管理系统
    Java自学笔记
    Java自学笔记1206
    java自学笔记
    Django常用命令
    django+SQLite搭建轻量级个人博客(六)数据校验
    django+SQLite搭建轻量级个人博客(五)分页
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5775591.html
Copyright © 2020-2023  润新知