使用gdb调试进程
最近有点闲,因为之前工作上需要用到这方面的东西,但是一直不是太懂,现在抽出时间好好研究下。先说点题外话,一直使用的linux都是装在虚拟机上的,虽然能正常使用,始终觉得不太舒服,每次都得先开虚拟机,然后启动linux系统,比较麻烦。最近突然想起阿里云服务器,于是看看了,居然还有免费的可以使用。于是申请了下,可以免费使用半个月,直接选择安装ubuntu在即可。其余维护都是
最近有点闲,因为之前工作上需要用到这方面的东西,但是一直不是太懂,
现在抽出时间好好研究下。
先说点题外话,一直使用的linux是装在虚拟机上的,虽然能正常使用,
始终觉得不太舒服,每次都得先开虚拟机,然后启动linux系统,比较麻烦。
最近突然想起阿里云服务器,于是看看了,发现居然还有免费的可以使用。
申请了下,可以免费使用半个月,直接选择安装ubuntu在即可。其余维护都由他们解决,非常方便。
每次使用,只需要开个putty或者SecureCRT
远程登录上就行,自己的桌面也清爽许多。
SecureCRT需要序列号,网上的破解版好多都无法正确破解,相比之下putty就好多了,完全免费,又
只有几百kb,诚意推荐。
接着回到正题。
要对程序进行gdb调试,必须在其程序中加入相关信息。
需要在编译时加入[-g]参数。
例如,需要编辑的源文件为hello.c,编译时使用命令为:gcc -g hello.c
对于未运行的程序,使用命令:gdb + (执行文件名)
例如:gdb a.out,接着设置断点、观察点等。
因为程序还未运行,所有需要使用命令run(简写r)来启动程序。
之后就可以对程序进行调试了。
对于已经在运行中的程序,需要将gdb attach到调试进程。
看了些资料,结合自己的使用效果:
使用已下两种方式:
1.
命令格式:
gdb + (--pid) + (进程pid)
例子:调试进程为a.out,其pid为100,于是使用命令:gdb --pid 100。之后进程的控制权会交给gdb。
接着可以进行断点、观察点的设置,然后让程序继续运行。
调试完之后,退出gdb调试使用命令quit(简写q)即可。
2.
命令格式:
gdb
attach + (进程pid)
例子:首先使用命令gdb进入gdb界面,然后使用命令 attach 100,即可取得进程控制权。
之后操作同1。
gdb调试还有很多东西,暂时就写到这里。
更多推荐
所有评论(0)