【问题标题】:Core dump analysis using gdb使用 gdb 进行核心转储分析
【发布时间】:2023-03-28 14:19:01
【问题描述】:

我有几个关于核心转储的问题。我在 Windows 上有 gdb,使用 Cygwin。

  1. 核心转储文件的位置是什么?它是一个 .exe.stackdump 文件吗? (这是崩溃后生成的唯一文件)我在其他论坛上读到核心转储文件名为“核心”。但我没有看到任何名为“core”的文件。

  2. 打开和理解core dump文件的命令是什么?

【问题讨论】:

    标签: c++ gdb cygwin segmentation-fault


    【解决方案1】:
    1. 您需要配置 Cygwin 以通过包含来生成核心转储

      error_start=x:\path\to\dumper.exe

      在您的CYGWIN 环境变量中(有关更多信息,请参阅“dumper”部分中的here)。如果你不这样做,你只会得到一个堆栈跟踪——不过,这也可以帮助你诊断问题。

    2. 按如下方式启动 gdb 以将其附加到核心转储文件:

      gdb myexecutable --core=mycorefile

      您现在可以使用常用的 gdb 命令来打印堆栈跟踪、检查变量的值等等。

    【讨论】:

    • 如何修改cygwin环境变量?
    • en.wikipedia.org/wiki/Environment_variable。如果您使用的是 Cygwin,我强烈建议您阅读一些 Unix 基础知识——您将需要它们。
    • 其实我知道环境变量的概念。我明白你在说什么,设置名为“error_start”的环境变量。我在问我应该在哪里定义新的环境变量?在同一个地方(我的电脑->属性->...)?
    • 这是一个选项——但更好的地方可能是在 cygwin.bat 中,因为该变量特定于 Cygwin。或者,为了测试,只需在运行您正在测试的可执行文件之前从 bash shell 中设置变量(使用export 命令)。
    • 试试CYGWIN=error_start=c:\cygwin\bin\dumper.exe。另请参阅mail-archive.com/cygwin@cygwin.com/msg77667.html 以获得更多建议。
    【解决方案2】:
    1. 是的,cygwin 默认创建a.exe.stackdump 文件。您还需要将其配置为创建cores(Martin 的回答涵盖了这一点)。
    2. 核心转储调试的简单教程可以找到here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      相关资源
      最近更新 更多