我使用gdb进行调试 我得到一个分段错误,然后我想在main函数中设置另一个断点并从头开始运行程序 但是,虽然我已经完成了当前的运行 它显示"该程序没有运行"
当我输入' list'
时它显示了一个libarary文件的代码片段 这意味着目前我不在主要功能
如果我重新运行程序,即使我在main()的开头设置断点 它仍然会出现分段错误,这意味着程序在库文件中运行
那么如何返回main()函数? 谢谢!
提示:我使用的是libpcap.h,我有一个' -lpcap'编译时的选项
BTW,当我使用break 9 将断点设置为9,gdb将程序运行到第11行?这种不准确有什么问题?谢谢!
答案 0 :(得分:1)
只需重新发出run
命令即可。您将丢失程序状态,但不会丢失符合您需要的断点。
答案 1 :(得分:0)
“顺便说一句,当我使用break 9将断点设置为9时,gdb将程序运行到第11行” - 从这里,以及你提供的其他信息,听起来好像源代码已经出来了与gdb的地址到源行的映射同步。你有没有机会编辑程序?你重新编译并重新启动了gdb吗?您是否看到过类似“可执行文件比源代码更新”的警告?
答案 2 :(得分:0)
如果我重新运行程序,即使我设置了断点 main()的开头它仍然得到分段错误,就意味着了 程序在库文件中运行
实际上,这意味着您未能在main
函数上设置断点,或者程序执行未达到main
并导致分段错误。请尝试以下步骤:
-g
gcc选项)从头开始重建程序。重置断点并注意来自gdb的任何警告。main
上设置断点而崩溃,请查看gdb中的堆栈跟踪(bt
命令)。它可能发生在main
之前,你不会在堆栈跟踪中看到main
。