GDB使用速查

启动... 1

设置断点... 1

跟踪执行... 2

调用堆栈... 2

查看信息... 2

多线程,多进程... 2

其他... 3

启动 [详细]

1.    通过gdb启动程序:gdb 可执行文件,然后调用run,启动程序。另外有一个start命令,在main函数入口处断住

2.    连到已经运行的程序:gdb

attach进程ID

(进程ID可以通过ps –a查看)

3.    退出gdb调试:detach

设置断点 [详细]

1.         函数断点:break函数名

2.         文件断点:break文件名:行号

3.条件断点:break … if条件或者通过condition断点号条件修改已经存在的断点

4.跳过n次后断住:ignore断点号 count

5.         一次性断点:tbreak …

6.         多函数断点:rbreak regex (regex为函数名的正则表达式)

7.         硬件写断点:watch变量或表达式(该表达式值被修改时断)如:watch *(int*)0xbfbdd5c8

8.         硬件读断点:rwatch变量或表达式(该变量读取时断)

9.         硬件读写断点:awatch变量或表达式(表达式读写时断)

10.     由于硬件断点需要硬件支持,在不支持硬件断点的情况下,watch会使用软件模拟,可以通过set can-use-hw-watchpoints和show can-use-hw-watchpoints设置或查看是否使用硬件断点

11.     查看所有断点:info break, info watchpoints

12.     删除断点:1.  clear函数名,2.  clear文件名:行号3.  delete(删除所有断点)等

13.     使用和去使能断点: enable [breakpoints] [range...]和disable [breakpoints] [range...]

14.断点后执行一段程序:commands断点号

...执行程序...

end

跟踪执行 [详细]

1.       继续执行:continue

2.       执行-进入(step in本行或多行):step 或者执行多个语句(行) step行数

3.       执行-跳过(step over本行或多行):next 或者执行多个语句(行) next行数

4.       执行跳到指定行:advance行号

5.       退出循环:until

6.       返回上一级函数(step out):finish

7.       机器指令级别执行:stepi和nexti

调用堆栈 [详细]

1.         查看调用堆栈: backtrace(bt)或者bt full 或者bt堆栈编号

2.         进入指定堆栈:frame堆栈编号,或者frame地址

3.         上升或者下降堆栈级别:up n或者down n

4.         查看当前栈信息:info frame,info args(参数信息),info locals局部变量

查看信息 [详细]

1.    info program:查看当前程序状态(如进程已停止,显示停止原因)

2.    查看变量或者表达式:print /格式表达式

查看格式:x 16进制 d有符号 u无符号 o八进制 t 二进制 a 地址(包括符号表信息) c 字符 f 浮点数

3.    将指针转换为数组查看:print *指针@长度

4.    查看结构体数组的某个字段      set$i=0

p dtab[$i++]->fv

回车

5.         查看内存:x/nfu 地址,其中n表示重复次数 f表示格式 u表示单位,u可以为b一字节  h两字节 w四字节 g八字节

6.         自动查看:每次断点后自动显示该表达式:display (参数与print类似)

7.         查看寄存器:print $寄存器名称 ,如print $pc

8.         查看源代码:list 行号,list函数名,list文件名:行号

9.         查看所有断点info breakpoints,info watchpoints

多线程,多进程 [详细]

1.         查看所有线程信息:info threads

2.         切换到指定线程:thread线程号

3.         在指定线程(或所有线程)执行命令:thread apply [threadno]或[all] 执行命令(如常用thread apply all bt查看进程中所有线程调用堆栈)

4.在指定线程设置断点:break断点信息 thread线程号

5.         多进程相关内容总是没看到预期效果,还望牛人指导:)

其他

1.动态修改变量:printf变量名=值

2.       调用函数:call表达式或者printf表达式,表达式中可以有函数调用

3.       执行shell命令:shell命令参数,特别的make,pwd等可以直接执行,其效果相当于shell make参数

linux dbg,linux下dbg相关推荐

  1. 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件

    过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size +1G| xargs rm 在清理系统日志文件 ...

  2. nvidia命令不可用linux,在Linux命令行下如何正确配置nVIDIA显卡

    在图形芯片领域,nVidia是一个后来者,它的历史仅相当于ATi的一半.1993年初,NVIDIA 由 Jen-Hsun Huang,,Chris Malachowsky和 Curtis Priem ...

  3. Linux :debian(ubuntu)下安装和使用haskell

    文章目录 Linux :debian(ubuntu)下安装haskell 安装 使用 Linux :debian(ubuntu)下安装haskell 安装 直接使用apt进行安装: sudo apt- ...

  4. Linux: debian/ubuntu下安装和使用Java 11

    Linux: debian/ubuntu下安装和使用Java 11 只需6行命令: su - echo "deb http://ppa.launchpad.net/linuxuprising ...

  5. Linux: debian/ubuntu下安装和使用Java 8

    Linux: debian/ubuntu下安装和使用Java 8 7行命令解决问题: su - echo "deb http://ppa.launchpad.net/webupd8team/ ...

  6. Linux: debian/ubuntu下安装Neo4j

    文章目录 Linux: debian/ubuntu下安装Neo4j Linux: debian/ubuntu下安装Neo4j Neo4j的官方仓库地址:neo4j/neo4j: Graphs for ...

  7. linux与windows下开发,Linux 与 Windows下开发感受

    Linux 和 Windows环境下开发各有优点.以下Linux 下使用感受是在Ubuntu11.04,别的发行版还没试过. 至于各自的缺点,都可以通过各种方法,得到或多或少地解决.至于要花费多大的精 ...

  8. Linux 2.6 下通过 ptrace 和 plt 实现用户态 API Hook

    (转载兼整理)Linux 2.6 下通过 ptrace 和 plt 实现用户态 API Hook 这厮此文写的相当实用,不知道为啥不好好整理一下,得,我代劳了吧.作者:l04m33@gmail.com ...

  9. usb linux 内核,Linux下USB内核之学习笔记

    Linux下USB子系统软件结构为 USB 内核(USB驱动,USBD )处于系统的中心,对于它进行研究是能够进行USB驱动开发(包括客户驱动和主机驱动)的第一步.它为客户端驱动和主机控制器驱动提供了 ...

  10. linux qt wifi连接,贡献自己写的,在linux,arm下的屏幕搜索wifi并连接(qt,多选择,wifi按信号排列)...

    当前位置:我的异常网» Linux/Unix » 贡献自己写的,在linux,arm下的屏幕搜索wifi并连接 贡献自己写的,在linux,arm下的屏幕搜索wifi并连接(qt,多选择,wifi按信 ...

最新文章

  1. Numpy-创建数组
  2. 批量kill掉linux中符合某些字段的进程
  3. php vimrc配置文件,vim技巧:我的 .vimrc 配置文件,详解每一个配置项的作用
  4. Android 平台电容式触摸屏的驱动基本原理
  5. php传递字符串给python,用PHP和Python生成短链接服务的字符串ID
  6. 深度学习(五十九)mxnet移植至android
  7. Android开发之广播
  8. Akka和Actor一起工作的消息《ten》译
  9. 单片机c语言1602怎么接线,lcd1602中文资料分享:lcd1602接线图_lcd1602与单片机连接图 - 全文...
  10. python操作cad的模块_利用python控制Autocad:pyautocad方式
  11. win10 双开微信实操
  12. iOS小技能:常用预处理指令(移除程序中的identifier、发布模式关闭NSLog、导出和隐藏符号)
  13. STK航空仿真(一)界面配置和插入模型
  14. DOTA数据集 | 数据前后处理操作系列
  15. opop如何和计算机链接,oppo如何连接电脑
  16. 微信朋友圈装x代码_朋友圈生成器有哪些_微信朋友圈生成器大全_微信朋友圈装逼生成器下载_飞翔软件专题...
  17. Python 协议攻击脚本(六): STP攻击
  18. 机票预订系统的可行性分析
  19. Ubuntu18.04下Qt安装
  20. 如何排查网络丢包问题

热门文章

  1. char *str1 和 char str2[]的详解
  2. 对国家最新战略“新基建”的解读,一起把握赚钱的机会
  3. 【Python】实现给小仙女定时推送消息
  4. lol哪个服务器能玩无限火力,lol无线火力玩什么快乐?无限火力最快乐的英雄排行...
  5. js如何截取某个字符串前面所有的字符串
  6. Python爬虫:爬取今日头条“街拍”图片(修改版)
  7. BIM技术越发成熟,项目利润从哪来?
  8. java springMVC demo 事例 注解模式 例子 完整事例
  9. 《黑客帝国》电影里满屏幕代码的“数字雨”
  10. Jaeger知识点补充