GDB的启动方式

1.直接启动

gdb

gdb test.out

gdb test.out core 异常崩溃时产生的core

2.动态连接

gdb test.out pid(进程)

动态的跟踪pid进程的行为

3.GDB应用示例一

gdb   //启动

(gdb) file test.out  //载入目标程序

(gdb) set args arg1  arg2   //设置命令行参数

(gdb) run   //执行目标程序

还有一个start命令,start在启动程序后,会立即停止。

gdb 

(gdb) file test.out 

上面两条语句等价于:gdb test.out

4.GDB应用示例二:动态的跟踪、监视某个进程的执行

gdb  //启动

(gdb) attach pid  //链接到目标进程,链接成功后,目标进程将停止执行。

(gdb) continue  //恢复执行

gdb 

(gdb) attach pid  

上面两条语句等价于gdb test.out pid

如何动态的链接到一个已经运行的进程上:

将test.out先运行起来

在另一个终端获得进程的pid

然后执行:gdb

(gdb) attach pid

5.GDB使用初探

gcc -g test.c func.c -o test.out

ulimit -c unlimited  (让程序在崩溃时产生core文件)

gdb test.out core

定位到func.c文件的第7行出现了问题

*g_pointer = (int )"D.T.Software";

想把g_pointer所指的地址处写一个整型值,然而g_pointer指向0地址处(为什么?因为定义了int* g_pointer ,它是全局变量,没有进行初始化,默认为0)

猜你喜欢

转载自www.cnblogs.com/-glb/p/12514440.html
GDB