C++ 如何知道Linux程序崩溃时的地址?

C++ 如何知道Linux程序崩溃时的地址?,c++,linux,gdb,centos,C++,Linux,Gdb,Centos,我有一个在Linux上运行的程序,它神秘地崩溃了。我已经知道一种知道它在哪里崩溃的方法是使用GDB。但我不想每次重新启动它时都附加到它上(因为我正在测试它,所以经常这样做)。有其他方法吗?您可以将操作系统配置为在程序崩溃时转储核心文件。然后,您可以检查内核以确定崩溃位置。您可以将操作系统配置为在程序崩溃时随时转储内核文件。然后可以检查内核以确定崩溃位置。首先执行ulimit-c unlimited,这样程序将留下内核转储。 然后,当它崩溃时,使用核心转储调用gdb,以读取 崩溃时程序的状态。首先

我有一个在Linux上运行的程序,它神秘地崩溃了。我已经知道一种知道它在哪里崩溃的方法是使用GDB。但我不想每次重新启动它时都附加到它上(因为我正在测试它,所以经常这样做)。有其他方法吗?

您可以将操作系统配置为在程序崩溃时转储核心文件。然后,您可以检查内核以确定崩溃位置。

您可以将操作系统配置为在程序崩溃时随时转储内核文件。然后可以检查内核以确定崩溃位置。

首先执行
ulimit-c unlimited
,这样程序将留下内核转储。 然后,当它崩溃时,使用核心转储调用
gdb
,以读取
崩溃时程序的状态。

首先执行一个
ulimit-c unlimited
,这样程序将留下一个内核转储。 然后,当它崩溃时,使用核心转储调用
gdb
,以读取
崩溃时程序的状态。

首先使用
ulimit-c unlimited
允许崩溃的程序写入内核转储

程序崩溃后,您将找到一个核心转储文件,名为
core
,如果您的程序是多线程的,则可能是
core.


您可以将其加载到GDB中,使用
GDB program core

检查崩溃点的状态,首先使用
ulimit-c unlimited
允许崩溃程序写入内核转储

程序崩溃后,您将找到一个核心转储文件,名为
core
,如果您的程序是多线程的,则可能是
core.


您可以将其加载到GDB中,以在启用GDB标志的情况下编译代码,从而检查崩溃点的状态

gcc-o-g(假设它是一个c/c++程序)

->使用gdb运行可执行文件。 gdb<二进制名称>

在此之后,有几种方法可以找到碰撞位置: 1.逐步执行。 2.运行代码,它崩溃(如预期),在gdb中键入“where”(不带引号),它给出回溯。从那里,你可以找到地址


下面是一个很好的gdb快速指南:

->在启用gdb标志的情况下编译代码

gcc-o-g(假设它是一个c/c++程序)

->使用gdb运行可执行文件。 gdb<二进制名称>

在此之后,有几种方法可以找到碰撞位置: 1.逐步执行。 2.运行代码,它崩溃(如预期),在gdb中键入“where”(不带引号),它给出回溯。从那里,你可以找到地址


这里有一个很好的gdb快速指南:

是的。我的打字错误。我会修好的。我的打字错误。我会修好的。