gpt4 book ai didi

C++:在 linux shell 脚本中运行 gdb

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:41 25 4
gpt4 key购买 nike

我有一个小的 C++ 程序 my-program。当我直接运行 my-program

./my-program arg1

一切正常。我没有收到任何错误。此外,我还有 my-script.sh:

#!/bin/sh
my-program $1

当我直接运行这个脚本时:

./my-script.sh arg1

我没有收到任何错误。

当从其他 Linux 进程运行 my-script.sh 时会出现问题。在这种情况下,我有时(!)会收到 Segmentation fault 错误。我做了什么:我将 -g 开关添加到 c++ 编译器并编辑了 my-script.sh,所以它变成了:

#!/bin/sh
gdb -batch -x gdb-script --args my-program $1

gdb-script 我写道:

run

但是,我仍然找不到导致Segmentation fault 错误的行。出错后如何让 dgb 将堆栈跟踪打印到某个文件?或者也许有办法在程序中获取导致此错误的位置?

最佳答案

The problem appears when my-script.sh is run from other linux processes.

您的脚本包含几个错误:

  1. 只有当 my-program 所在的目录在您的 $PATH 上时,它才会起作用。

  2. 它没有正确地将参数传递给 my-program。特别是,只有第一个参数被传递,如果该参数包含空格,它将被拆分成单词,并在 my-program 被调用时变成多个参数。

要解决此问题,请执行以下操作:

#!/bin/sh
exec $(dirname "$0")/my-program "$@"

How can I make dgb print the stacktrace to some file after error?

where 命令附加到 gdb-script

关于C++:在 linux shell 脚本中运行 gdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42220060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com