c++ - gdb 调试远程核心转储

标签 c++ debugging gdb remote-debugging

我有一个用 C++ 编写的服务器在我无法直接访问的生产环境中崩溃。崩溃产生了一个巨大的核心转储~34G,我无法在本地复制。我需要分析核心转储但不知道如何在不复制它的情况下完成。我尝试在目标上运行 gdbserver 但它没有将核心文件作为参数并且似乎只适用于调试从主机运行的远程应用程序。有办法做到这一点吗?

最佳答案

I need to analyze the core dump but don't know how it can be done without copying it over.

你不能。您需要将核心转储放到可以运行 GDB 的位置。

I cannot ssh to the remote machine but can ask the sys admin to run something like gdbserver for me but he cannot analyze and debug the core file.

您不需要系统管理员来分析任何东西。你只需要让他运行一系列 GDB 命令,然后将输出发送给你。例如

where
thread apply all where
info registers
disas

... 将使您以很长的方式理解问题,并花费您的系统管理员不到 5 分钟的时间。

I still will need to uncompress it to run it on gdb which I don't want to do on my local machine.

另外,请与您的经理谈谈。您的开发设置不合理。您必须能够在本地分析生产崩溃,这意味着您必须能够访问足够强大的机器。

关于c++ - gdb 调试远程核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15276869/

相关文章:

cocoa - 如何知道是什么原因导致调用drawRect?

c++ - 如何在 gdb 执行时插入断点

ios - 不调用 ObjC 类方法。 GDB玩游戏?

c++ - 垃圾内存?

c# - 将结构从非托管 C++ 传递到 C#

debugging - 如何在 IntelliJ 中调试时修改变量值,以便自动更新相应的 watch ?

debugging - 当break(函数名)/break *(函数名)时gdb中断地址不同

c++ - 如何编写使用 powershell 而不是 cmd 的控制台应用程序

c++ - boost::iostream::basic_array_sink/source 的长度

c# - Visual Studio - 抑制某些 "Exception thrown"消息