欢迎来到天天文库
浏览记录
ID:21982616
大小:1.07 MB
页数:47页
时间:2018-10-21
《gdb调试简易教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、GDB调试方法与技巧刘鹏昊GDB简介:调试器(例如GDB)能让你观察一个程序在执行时的内部活动,或者程序出错时发生了什么GDB主要能为你做四件事情:运行你的程序,设置所有的能影响程序运行的东西保证你的程序在指定的条件下停止当你程序停止时,让你检查发生了什么改变你的程序。那样你可以试着修正某个bug引起的问题,然后继续查找另一个bug启动:最通常的命令就是使用一个参数:$(m68k-linux-)gdb<可执行文档名>你还可以同时为你的执行文件指定一个core文件:$gdb<可执行文件名>core你也可以为你要执行的文件指定一个进程
2、号:$gdb<可执行文件名><进程号>常用启动参数:-symbols<文件名>(-s<文件名>)从<文件名>中读去符号-x<文件名>执行gdb命令,在<文件名>指定的文件中存放着一序列的gdb命令,就象一个批处理-directory(-d)<路径>指定路径。把<路径>加入到搜索源文件的路径中常用启动参数:-quiet(-q)安静模式,不输出介绍和版权信息-x<文件名>执行gdb命令,在<文件名>指定的文件中存放着一序列的gdb命令,就象一个批处理-directory(-d)<路径>指定路径。把<路径>加入到搜索源文件的路径中结束:
3、quit直接退出gdbdetach放弃连接Shell命令:shell启动一个shell执行,不用退出GDB就可以执行一个shell命令make[make-args]使用[make-args]进行make相当于`shellmakemake-args'GDB命令命令输入技巧:可以把一个gdb命令缩写成开头几个字母,如果这没有二意性你可以直接回车来运行。如果有不止一个选择的话,你还可以使用TAB键让gdb给你完成接下来的键入,或向你显示可选择的命令使用helphelp[clas
4、s]显示某一类命令的列表$helpstatusStatusinquiries.Listofcommands:show--Genericcommandforshowingthingsset with"set"info--GenericcommandforprintingstatusGDB命令(使用help)help[COMMAND]列出某个命令的使用方法complete列出所有以ARGS开头的命令‘info’(可以缩写为‘i’)用来显示你程序的状态。比如,你可以使用infoargs列出你程序所接
5、受的命令行参数。使用inforegisters列出寄存器的状态。‘show’与‘info’相反,‘show’命令用来显示gdb自身的状态例如showversion显示版本号,showcopying显示版权信息GDB下运行程序程序编译:当你在gdb下运行程序时,你必须先为gdb准备好带有调试信息的可执行文档。为了高效的调试一个程序,你需要使用编译器来产生附带调试信息的可执行代码这些调试信息存储在目标文件中;描述了变量数据类型和函数声明,在源文件代码行和执行代码之间建立联系。为产生调试信息,当你使用编译器时指定'-g'选项,就可以为
6、你的程序产生带有调试信息的可执行代码GDB下运行程序Run命令:用于启动你的程序,使用命令前必须先指定你程序的名字(用gdb的命令行参数)或使用‘file’命令,来指定文件名工作路径:每次用‘run’命令来运行程序时,程序将继承gdb的当前工作目录。而gdb的工作目录是从它的父进程继承而来的(一般是shell)。但你可以自己使用‘cd’命令指定工作目录。gdb的工作目录就是它去寻找某些文件或信息的途径。`cdDIRECTORY'把gdb的工作目录设为DIRECTORY`pwd'打印输出当前目录GDB下运行程序调试一个已经运行的程序
7、:attach这个命令把一个已经运行的进程(在gdb外启动)连接入gdb,以便调试。PROCESS-ID是进程号。当然要使用‘attach’命令的话,你的操作系统环境必须支持进程。另外你还要有向此进程发信号的权力。交叉调试环境:目标板:gdbserver:port–attach调试端:targetremoteip:port停止调试:detachGDB下运行程序调试一个多线程的程序:GDB会自动提示新线程创建thread各线程间进行切换infothreads查看已经
8、存在的线程无论gdb何时中断了你的程序(因为一个断点或是一个信号),它自动选择信号或断点发生的线程为当前线程。gdb将用一个格式为'[SwitchingtoSYSTAG]'的消息来向你报告。GDB下运行程序调试多进程:GDB对调试使用'fork'系
此文档下载收益归作者所有