gpt4 book ai didi

debugging - 发生异常时程序在 gdb 下卡住

转载 作者:行者123 更新时间:2023-12-02 04:04:57 29 4
gpt4 key购买 nike

我用 g++ 编译了一个简单的测试程序:

int main()
{
try
{
printf("before\n");
throw 1;
}
catch(int i)
{
printf("catched int\n");
}
catch(...)
{
printf("catched(...)\n");
}
}

通常无论是否包含调试信息都可以正常工作。
但是当使用 gdb 调试时,它总是卡在“throw 1;”上。行,所以我无法调试通常会引发异常的程序。
来自调试器的最后信息是:
Catchpoint 1 (exception thrown), 0x00007ffff7b8f9e0 in __cxa_throw () from /usr/lib/libstdc++.so.6

我的编译和链接选项:
g++ -Wshadow -Wunreachable-code -Wswitch-enum -Wswitch-default -Wextra -Wall  -pg -g -m64    -c main.cpp

g++ -o exec/exception_problem obj/main.o -pg

我的环境:
Ubuntu 10.10、64 位;
g++/gcc 4.4.5;
gdb 7.2;
在代码块 svn rev 7440 下调试

有什么想法有什么问题吗?

附加信息:
gdb 日志的最后两行是:
Catchpoint 1 (exception thrown), 0x00007ffff7b8f9e0 in __cxa_throw () from /usr/lib/libstdc++.so.6
>>>>>>cb_gdb:

日志中的最后一个字符是冒号。
gdb 命令行:
/usr/bin/gdb -nx -fullname -quiet -args exec/exception_problem 

我没有在我的主目录中找到任何 *gdbinit*;全局 gdbinit 为空。代码块是否有可能准备特定的 gdbinit 并将其放入 gdb?

向所有人致以最诚挚的问候。

最佳答案

Catchpoint 1 (exception thrown) ...



您的 .gdbinit 中有什么东西吗?你还没有告诉我们? (也许 catch throw ?)

Catchpoint 1真的是 GDB 打印的最后一行吗?这是我看到的:
Reading symbols from /tmp/a.out...done.
Catchpoint 1 (throw)
(gdb) run
before
Catchpoint 1 (exception thrown), __cxxabiv1::__cxa_throw (obj=0x602090, tinfo=0x601060, dest=0) at ../../../../src/libstdc++-v3/libsupc++/eh_throw.cc:70
70 ../../../../src/libstdc++-v3/libsupc++/eh_throw.cc: No such file or directory.
in ../../../../src/libstdc++-v3/libsupc++/eh_throw.cc
(gdb) c
catched int
[Inferior 1 (process 16008) exited normally]
(gdb) q

关于debugging - 发生异常时程序在 gdb 下卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8203194/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com