[英]how to return to main function in gdb
我正在使用gdb进行调试,但遇到了段错误,然后我想在main函数中设置另一个断点,然后从头开始运行程序,尽管我已经完成了当前运行,但显示“该程序不是正在运行”
当我输入“列表”时
它显示了一个库文件的代码段,这意味着当前我不在主函数中
如果我重新运行程序,即使我在main()的开头设置了断点,它仍然会出现分段错误,这意味着程序正在库文件中运行
那么如何返回main()函数呢? 谢谢!
提示:我使用的是libpcap.h,编译时有一个'-lpcap'选项
顺便说一句,当我使用break 9将断点设置为9时,gdb将程序运行到第11行吗? 这种不正确怎么了? 谢谢!
只需重新发出run
命令。 您将丢失程序状态,但不会丢失断点,断点似乎符合您的需求。
“顺便说一句,当我使用Break 9将断点设置为9时,gdb将程序运行到第11行”-从此以及您提供的其他信息,听起来好像源代码与gdb的地址到源代码行的映射。 您有没有在编辑程序? 您重新编译并重新启动gdb了吗? 您是否看到过类似“可执行文件比来源更新”的警告?
如果我重新运行程序,即使我在main()的开头设置了断点,它仍然会出现分段错误,这意味着程序正在库文件中运行
实际上,这意味着您要么无法在main
函数上设置断点,要么程序执行未达到main
函数并出现分段错误。 请尝试以下步骤:
-g
gcc选项)从头开始重建程序。 重置断点并注意来自gdb的任何警告。 main
节点上设置了断点,请查看堆栈跟踪(gdb中的bt
命令)。 它可能在main
之前发生,并且您不会在堆栈跟踪中看到main
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.