【发布时间】:2017-09-07 04:37:59
【问题描述】:
我无法在 gdb 中转储 pthread_mutex_t 的结构成员值以检测死锁
(gdb) where
#0 boost::mutex::lock (this=0x7fffffffd980) at mutex.hpp:116
#1 0x000000000043454b in boost::unique_lock<boost::mutex>::lock (this=0x7fffffffd970) at lock_types.hpp:346
#2 0x0000000000434591 in unique_lock (this=0x7fffffffd970, m_=@0x7fffffffd980) at lock_types.hpp:124
(gdb) print m
$21 = 0x802418880
(gdb) print &m
$22 = (pthread_mutex_t *) 0x7fffffffd980
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd".
testapp.cpp 的来源
boost::mutex cn_mutex;
boost::mutex::scoped_lock lock(cn_mutex);
mystruct st;
st.id = 888;
while(true)
{
usleep(1000 * 2000);
}
std::cout << "done \n";
return 0;
编译参数:
/usr/bin/c++ -g -Wno-unknown-pragmas -Wno-sign-compare -g -pg CMakeFiles/testinterproc.dir/testapp.cpp.o -o testinterproc /usr/local/lib/libssl.so /usr/local/lib/libcrypto.so /usr/local/lib/libexecinfo.so /usr/local/lib/liblog4cplus.so -lpthread /home/xgps_app/thirdparty/boostlib1_64_0/lib/libboost_iostreams.a /home/xgps_app/thirdparty/boostlib1_64_0/lib/libboost_system.a /home/xgps_app/thirdparty/boostlib1_64_0lib/lib/boost_thread.a /home/xgps_app/thirdparty/boostlib1_64_0 /home/xgps_app/thirdparty/boostlib1_64_0/lib/libboost_filesystem.a -Wl,-rpath,/usr/local/lib
OS 9.0-RELEASE FreeBSD 9.0-RELEASE #1: amd64
请帮忙!
谢谢!
【问题讨论】:
-
你是如何编译你的代码的?
-
请编辑您的问题以包含使用的命令。
-
还要注意 pthread 类型是opaque types。你不应该知道他们的成员,或者访问他们。
-
@Nikola 请自行在问题中为您的问题提供更多详细信息。您可以点击问题底部的“编辑”按钮,添加您在评论中输入的详细信息,然后删除评论。
-
代码中仍然没有
m。
标签: c++ boost gdb mutex freebsd