使用gdb调试进程
2015-11-25 22:36
405 查看
最近有点闲,因为之前工作上需要用到这方面的东西,但是一直不是太懂,
现在抽出时间好好研究下。
先说点题外话,一直使用的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调试还有很多东西,暂时就写到这里。
现在抽出时间好好研究下。
先说点题外话,一直使用的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调试还有很多东西,暂时就写到这里。
相关文章推荐
- C#实现进程管理的启动和停止实例
- DOS中判断进程是否存在的方法
- C#进程监控方法实例分析
- 批处理 结束麦咖啡进程的代码
- PowerShell查看进程的所属用户
- C#实现强制关闭当前程序进程
- C#实现读取被进程占用的文件实现方法
- C#获取进程或线程相关信息的方法
- 简要对比C语言中三个用于退出进程的函数
- VC实现获取当前正在运行的进程
- win32下进程间通信(共享内存)实例分析
- C语言中操作进程信号的相关函数使用详解
- C语言实现在windows服务中新建进程的方法
- VC下通过系统快照实现进程管理的方法
- C++基于CreateToolhelp32Snapshot获取系统进程实例
- C#实现关闭其他程序窗口或进程代码分享
- C#使用SendMessage实现进程间通信的方法
- C#网络编程基础之进程和线程详解
- C++通过TerminateProess结束进程实例
- Shell脚本实现Linux系统和进程资源监控