gpt4 book ai didi

linux - 使用GDB调试多线程程序(openmp)

转载 作者:可可西里 更新时间:2023-11-01 11:49:37 25 4
gpt4 key购买 nike

全部

我正在尝试使用 gdb 在 Fedora 中调试具有 24 个线程的程序,并且我有以下 GDB 输出。当我想切换到发生段错误的特定线程时,我无法使用 thread 命令切换到该线程(GDB 输出中的最后 4 行)。你能帮我吗?你知道这是什么错误吗?GDB输出如下:

    [root@localhost nameComponentEncoding]# gdb NCE_david
GNU gdb (GDB) Fedora (7.2.90.20110429-36.fc15)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /mnt/disk2/experiments_BLOODMOON/two_stage_bloom_filter/programs/nameComponentEncoding/NCE_david
(gdb) r
Starting program:
[Thread debugging using libthread_db enabled]

[New Thread 0x7fffd2bf5700 (LWP 11538)]
[New Thread 0x7fffd23f4700 (LWP 11539)]
[New Thread 0x7fffd1bf3700 (LWP 11540)]
[New Thread 0x7fffd13f2700 (LWP 11541)]
[New Thread 0x7fffd0bf1700 (LWP 11542)]
[New Thread 0x7fffd03f0700 (LWP 11543)]
[New Thread 0x7fffcfbef700 (LWP 11544)]
[New Thread 0x7fffcf3ee700 (LWP 11545)]
[New Thread 0x7fffcebed700 (LWP 11546)]
[New Thread 0x7fffce3ec700 (LWP 11547)]
[New Thread 0x7fffcdbeb700 (LWP 11548)]
[New Thread 0x7fffcd3ea700 (LWP 11549)]
[New Thread 0x7fffccbe9700 (LWP 11550)]
[New Thread 0x7fffcc3e8700 (LWP 11551)]
[New Thread 0x7fffcbbe7700 (LWP 11552)]
[New Thread 0x7fffcb3e6700 (LWP 11553)]
[New Thread 0x7fffcabe5700 (LWP 11554)]
[New Thread 0x7fffca3e4700 (LWP 11555)]
[New Thread 0x7fffc9be3700 (LWP 11556)]
[New Thread 0x7fffc93e2700 (LWP 11557)]
[New Thread 0x7fffc8be1700 (LWP 11558)]
[New Thread 0x7fffc83e0700 (LWP 11559)]
[New Thread 0x7fffc7bdf700 (LWP 11560)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd2bf5700 (LWP 11538)]
compare (__str="art", this=0xbf934d0) at /usr/lib/gcc/x86_64-redhat-linux/4.6.0/
2175 const size_type __size = this->size();
(gdb) thread 11538
Thread ID 11538 not known.
(gdb) thread 0x7fffd2bf5700
Thread ID -759212288 not known.

最佳答案

GDB 有自己的线程编号。做这样的事情:

(gdb) info threads

Id Target Id Frame
<... snip ...>
2 Thread 0x7ffff7fc1700 (LWP 11538) ...
* 1 Thread 0x7ffff7fc2740 (LWP 11537) ...
# thread with PID 11538 is GDB thread number 2
(gdb) thread 2

来自

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd2bf5700 (LWP 11538)]
compare (__str="art", this=0xbf934d0) at /usr/lib/gcc/x86_64-redhat-linux/4.6.0/
2175 const size_type __size = this->size();

段错误似乎是由线程 11538 引起的。使用 pthread_setname_np() 命名您的线程将使 GDB 中的调试更容易。

我的猜测是 this,即 C++ 实例变量,此时为 NULL(易于验证),您的情况是“释放后使用”错误。

关于linux - 使用GDB调试多线程程序(openmp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16756489/

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