在Linux中C语言的调试(下面的程序如何调试)?

在Linux中C语言的调试(下面的程序如何调试)?,第1张

你说的调试是什么意思?

如果是想用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是空函数,你可以在里面加点内容,用上输入参数),则只会把前两个参数出栈,第三个输入参数就被忽略掉了。


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

原文地址: http://outofmemory.cn/yw/8290023.html

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

发表评论

登录后才能评论

评论列表(0条)

保存