c++ - 使用 gdb 检测 sh 中的段错误?

标签 c++ unix

我正在使用 scientific linux。在目录 user/project/Build 中,在我运行“make”编译和链接所有 cpp 文件后,我没有遇到任何问题。但是,当我转到目录 user/run/run.sh(它在 user/project/Build/bin/project 中运行项目二进制文件)时,出现段错误。在目录 user/run 中,我在命令提示符中输入“gdb”并收到消息“*** 未指定目标且未找到生成文件。停止。”

我应该如何检测段错误?

最佳答案

首先,您必须构建支持调试符号的项目。对于 gcc,这是使用 -g 选项完成的。然后使用程序的可执行文件运行 gdb。例如:

gdb ./a.out

gdb 命令提示出现。为了启动您的程序,您应该执行命令run。如果您的程序需要一些命令行参数,您也可以指定它们。例如 run -d firstarg -l secondarg

当你的程序接收到一个段错误时,只要在 gdb 提示符下执行命令 bt 完整

这将为您提供程序的回溯、变量状态和收到段错误的源代码行。

关于c++ - 使用 gdb 检测 sh 中的段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27992719/

相关文章:

c++ - 如何使用 dtrace 进行挂钟分析?或者,如何使用配置文件提供程序来计算进程未运行的样本?

regex - 如何在 AWK 中使用正则表达式作为字段分隔符?

unix - 在通过 ssh 的 nohup 期间我 ctr+c 之后会发生什么?

ruby-on-rails - Puma 错误:无法为 "10.0.2.2"端口 3000 分配请求的地址 - bind(2)(Errno::EADDRNOTAVAIL)

unix - 在典型的智能手机上与 SSH 一起使用的好 unix 编辑器是什么?

c++ - QML - 如何在 ListView 上显示文本文件?

c++ - 在 makefile 中,如何对变量中的每个文件名执行命令?

c++ - IPv6 区域索引和 scope_id

c++ - 获取 system() 的输出到一个变量中

mysql - 连接/隧道连接到远程服务器以绕过防火墙