博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GDB高级技巧
阅读量:4229 次
发布时间:2019-05-26

本文共 1081 字,大约阅读时间需要 3 分钟。

文章来源:

 

本文主要示例一些平常较少使用到的GDB功能,掌握这些用法有助于提高GDB调试和解决问题的能力。 

1) 查看宏 
默认情况下,在GDB中是不能查看宏的值及定义的,但通过如下方法,则可以达到目的: 
编译源代码时,加上“-g3 -gdwarf-2”选项,请注意不是“-g”,必须为“-g3”,查看宏的值使用命令p,这和查看变量的值的方法相同,如果想查看宏的定义,使用 “-macro expand”命令即可 
2) 如果执行一连串命令? 
这个借助命令“source”即可,“source”的参数为一个存有一串命令的文件名 
3) 如何同时给多个函数打断点? 
使用“rb”命令,如果执行“rb”时不带参数,则表示在所有函数处打一个断点,“rb”后面可以接一个符合正则表达式的参数,用来对符合正则表达式的所有函数打断点 
4) .gdbinit文件 
GDB在启动时,会在用户主目录中寻找这个文件,并执行该文件中所有命令,文件格式为: 
define command-alias 
command 
end 
如要给“b main”取一个别名“bm”: 
define bm 
b main 
end 
此外,还可以给这个别名加上帮助说明性文字,格式为: 
document bm 
帮助说明性文字 
end 
如,给“bm”别名添加帮助说明性文字: 
document bm 
break at main() function 
end 
这样,在使用“help bm”时,GDB就会打印出“break at main() function” 
5) 自定义命令 
除了在.gdbinit文件自定义命令外,还可以直接在GDB运行环境定义命令,语法相同 
6) 定义命令钩子 
钩子用来在执行某个命令前或命令后,先执行某个或某些命令。假如想在print命令前显示一段 “----------”,则: 
define hook-print 
echo ----------/n 
end 
注意“hook-”后接的必须是命令全称,不能是缩写。 
如果想在命令执行完,再执行某个或某些命令,则: 
#define hookpost-print 
echo ----------/n 
end 
7) GDB中循环 
GDB支持 if/else/while/loop_break/loop_continue,如: 
(gdb) set $x=1 
(gdb) while $x==1 
>p $x 
>set $x=0 
>p $x 
>end 
----------------- 
b$8 = 1 
----------------- 
b$9 = 0

转载地址:http://bssqi.baihongyu.com/

你可能感兴趣的文章
Photoshop CS3 All-in-One Desk Reference For Dummies
查看>>
The Essential Guide to Dreamweaver CS3 with CSS, Ajax, and PHP
查看>>
Office 2007 Bible
查看>>
Automated Data Analysis Using Excel
查看>>
Google SketchUp For Dummies
查看>>
Foundation Flash CS3 for Designers
查看>>
SAS For Dummies
查看>>
Blackjacking: Security Threats to BlackBerry Devices, PDAs, and Cell Phones in the Enterprise
查看>>
SQL All-in-One Desk Reference For Dummies
查看>>
The CSS Anthology: 101 Essential Tips, Tricks & Hacks
查看>>
High Performance Switches and Routers
查看>>
Hacking Exposed Wireless
查看>>
Professional VB 2005 with .NET 3.0
查看>>
Visual Basic2005 Instant Results
查看>>
Enterprise AJAX: Strategies for Building High Performance Web Applications
查看>>
Ajax Bible
查看>>
Windows Vista Security: Securing Vista Against Malicious Attacks
查看>>
Microsoft(R) XNA(TM) Unleashed: Graphics and Game Programming for Xbox 360 and Windows
查看>>
Hacking Windows Vista: ExtremeTech
查看>>
Rich Internet Applications with Adobe Flex & Java
查看>>