繁体   English   中英

如何在gdb中返回主函数

[英]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函数并出现分段错误。 请尝试以下步骤:

  1. 使用调试信息( -g gcc选项)从头开始重建程序。 重置断点并注意来自gdb的任何警告。
  2. 如果程序仍然崩溃并在main节点上设置了断点,请查看堆栈跟踪(gdb中的bt命令)。 它可能在main之前发生,并且您不会在堆栈跟踪中看到main

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM