码迷,mamicode.com
首页 > 数据库 > 详细

GDB的启动方式

时间:2020-03-18 00:00:05      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:动态   software   监视   问题   命令行参数   进程   定义   令行   等价   

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)

 

GDB的启动方式

标签:动态   software   监视   问题   命令行参数   进程   定义   令行   等价   

原文地址:https://www.cnblogs.com/-glb/p/12514440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!