第一步 编译一个死循环程序。
/ 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调试一个运行中的进程、天狼程序麻将机循环次数怎么设置、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)