如果是想用GDB工具进行调试在gcc选项中加入-g
例如:gcc *.c -o -g * (其中*是你的文件名,两个*可以不同)
然后用 gdb *(上面命令中第二个*)
然后,就看你想怎么调试了。
GDB有很多命令
list列出代码
break 设置断点
run 运行程序
step 但不执行
quit 退出
……
你这个是多进程的。说实话,没用GDB调过。
不过简单看来你的子进程没有exit()函数。
如果你运行结果不对,那么看看你的子进程的问题吧
1. 如果你两个函数是写在一个c文件里,编译会出错,也就无法生成 a.out 了。 用下面的方法可以帮你“强行”这么使用。先写一个 func.c ,真正实现 func函数(两个参数), 然后再写一个main.c,里面是main函数的实现,在main.c的头部,加入
extern int func(int a, int b, int c);然后你就可以在main.c里调用3个参数的func,然后编译的方法是
gcc -g func.c main.c
就会生成 a.out了
2, 用 gdb a.out 来调试刚才生成的 a.out,在gdb里,可以用 disassemble /m 来看反汇编。如果你了解C函数调用是如何传递参数的就会明白,其实你在main里面传入三个参数,也就是把三个参数依次压栈,而在 func里面(你的func是空函数,你可以在里面加点内容,用上输入参数),则只会把前两个参数出栈,第三个输入参数就被忽略掉了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)