如何gdb调试一个运行中的进程

如何gdb调试一个运行中的进程,第1张

第一步 编译一个死循环程序

/ File name mallocc/

#include <stdioh>

#include <stdlibh>

#include <stringh>

void getmem(void p, int num){

p = (void )malloc(num);

}

void test(void){

char str = NULL;

getmem((void )&str, 100);

strcpy(str, "Hello");

printf("%s\n", str);

}

int main(void){

int i = 0;

while(1){

if (i == 1){

test();

return 1;

}

}

return 0;

}

我们可以看出,这个程序就是malloc一段内存空间,用来供strcpy使用,由于只是调试一下,就没有在test程序中加上一些关于strcpy的正确性判断语句。

函数的正常退出的情况是i==1,但是程序运行过程中根本无法使i==1成立。i的变量的值将会在使用gdb时用到。

开始编译

$gcc -g mallocc

得用gdb,加上-g还是需要的。生成的可执行文件为aout

第二步 让gdb连接到正在执行的进程上去

首先运行程序。

$/aout

明显的,是一个死循环。

重新开一个shell

$ps -u

我的机器的运行情况如下所示:

Warning: bad ps syntax, perhaps a bogus '-' See >

以上就是关于如何gdb调试一个运行中的进程全部的内容,包括:如何gdb调试一个运行中的进程、天狼程序麻将机循环次数怎么设置、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10209521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存