【问题标题】:Need stack trace, but Cygwin won't even print core dump需要堆栈跟踪,但 Cygwin 甚至不会打印核心转储
【发布时间】:2012-06-11 15:07:48
【问题描述】:

我有一个在 Windows 7 上的 Cygwin 中运行的程序,它总是导致分段错误。这不是我的程序,但我需要帮助,开发人员要求我至少提供一个堆栈跟踪 我的 Cygwin 变量如下所示:error_start=c:/cygwin/bin/dumper.exe。我也在执行程序之前运行了这个命令:ulimit -c unlimited。这是我可以通过谷歌(包括this 问题)找到的唯一两个要求,以便在分段错误后从 Cygwin 获取某种信息。

但是,当我运行程序时,它仍然会打印消息Segmentation fault,并且不会打印 a.exe.stackdump 或任何其他转储文件,也不会启动转储程序实用程序。有关如何获取所需信息的任何建议?

【问题讨论】:

  • 它必须被编译以转储核心(例如make CDEBUGFLAGS=-g ...)。如果您没有获得核心文件,请检查您的限制并确保您的coredumpsize 未设置为零(例如limit)。您可以通过 limit coredumpsize unlimited 将 coredumpsize 设置为无限制
  • 如果我用 Visual Studio 编译,你知道如何设置吗?
  • 如果是 Windows 应用,请阅读:stackoverflow.com/questions/4672572/… 否则,我不知道如何使用 Visual Studio。

标签: debugging cygwin


【解决方案1】:

与 Unix 不同,核心转储在 Windows 上不是“免费的”;即使你能得到它们,使用它们也不像在 Unix 上那么容易。 Cygwin 没有解决这些基本的平台差异。一个简单的事实是,调试在 Windows 上采用了不同的路径:IDE、交互式调试器等。我不会继续尝试将那个方钉敲入你熟悉的圆孔中。

没有安装 Visual Studio 并在其调试器下运行程序,获得有用的东西的最简单方法可能是安装 WinDbg,在其下运​​行您的程序,然后在它崩溃时说 !heap -p -a UserAddr。堆栈回溯应该在某处的输出中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多