小编Chr*_*son的帖子

当命名函数/符号到达堆栈顶部时,Eclipse GDB中断

有没有办法让GDB在到达堆栈顶部时停止在命名符号处?我问,因为在下图所示的堆栈帧之后,程序似乎执行了几个函数(太多不能逐步执行)而没有符号信息,只有地址,然后崩溃可执行文件.如果有任何方法在堆栈顶部推送或弹出任何带有任何文本名称的功能时自动停止,而不仅仅是一个地址,我很感激被告知.

上下文是我正在诊断在我的信号处理程序在一个内部抛出异常时在调试测试和发布测试模式中发生的崩溃BOOST_CHECK_THROW.std::raise(SIGFPE)虽然所引发的信号类型似乎并不重要,但信号是由触发的.即使我使用一些复杂的技巧来让程序发出信号并多次抛出,在非测试模式下也不会发生崩溃.

示例堆栈跟踪

//common includes
#include <chrono> // s
#include <csetjmp> // jmp_buf, longjmp, setjmp
#include <csignal> // raise, signal
#include <cstdlib> // set_terminate
#include <iostream> // cout
#include <stdexcept> // exception, runtime_error
#include <string> // string, to_string
#include <thread> // sleep_for

namespace {

void sig_handler(int sig){
 std::signal(sig,SIG_DFL);
 std::signal(sig,sig_handler);
 throw std::runtime_error(std::string("Caught signal: ") +
  std::to_string(sig) + "\n");
}

void install_sig_handler(){std::signal(SIGFPE,sig_handler);} //add signals here

struct sig{sig(){install_sig_handler();}};

} //anonymous namespace

#ifndef TEST //non-test build functions, global setup, and main …
Run Code Online (Sandbox Code Playgroud)

c++ eclipse gdb boost-test mingw-w64

6
推荐指数
0
解决办法
127
查看次数

标签 统计

boost-test ×1

c++ ×1

eclipse ×1

gdb ×1

mingw-w64 ×1