C++ 检查C++;崩溃后gdb回溯中的对象

C++ 检查C++;崩溃后gdb回溯中的对象,c++,gdb,C++,Gdb,我正在学习使用GDB进行调试,我不知道该怎么做 我在GDB中运行了一个程序,我需要它来工作,但它会因为SEGFULT而崩溃。当我在GDB中执行backtrace时,我看到了这一点 (gdb) backtrace #0 0x08200100 in boost::shared_ptr<boost::re_detail::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_trait

我正在学习使用GDB进行调试,我不知道该怎么做

我在GDB中运行了一个程序,我需要它来工作,但它会因为SEGFULT而崩溃。当我在GDB中执行
backtrace
时,我看到了这一点

(gdb) backtrace
#0  0x08200100 in boost::shared_ptr<boost::re_detail::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > >::get (this=0x2) at /usr/include/boost/smart_ptr/shared_ptr.hpp:668
#1  0x081f94c3 in boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::get_traits (this=0x2) at /usr/include/boost/regex/v4/basic_regex.hpp:619
#2  0x081ef769 in boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher (this=0xb60d3eb4, first=..., end=..., what=..., e=..., 
    f=boost::regex_constants::match_any, l_base=...) at /usr/include/boost/regex/v4/perl_matcher.hpp:372
#3  0x081e2214 in boost::regex_match<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > (first=..., last=..., m=..., e=..., flags=boost::regex_constants::match_any)
    at /usr/include/boost/regex/v4/regex_match.hpp:49
#4  0x081d43bf in boost::regex_match<std::char_traits<char>, std::allocator<char>, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > (s=..., e=..., flags=boost::regex_constants::match_default)
    at /usr/include/boost/regex/v4/regex_match.hpp:100
#5  0x081ca3c1 in [my project] (this=0x2, request=0xb5706630)
    at [source of my project]:127
[more calls here]
(gdb)回溯
#在/usr/include/boost/smart_ptr/shared_ptr::get(this=0x2)的boost::shared_ptr::get中0 0x08200100。hpp:668
#1 0x081f94c3位于/usr/include/boost/regex/v4/basic_regex::get_traits(this=0x2)的boost::basic_regex::get_traits中。hpp:619
#2 boost::re_detail::perl_matcher::perl_matcher中的0x081ef769(this=0xb60d3eb4,first=…,end=…,what=…,e=。。。,
f=boost::regex_常量::match_any,l_base=…)at/usr/include/boost/regex/v4/perl_matcher.hpp:372
#boost::regex_匹配中的3 0x081e2214(第一个=…,最后一个=…,m=…,e=…,标志=boost::regex_常量::匹配任何)
at/usr/include/boost/regex/v4/regex_match.hpp:49
#boost::regex_匹配中的4 0x081d43bf(s=…,e=…,flags=boost::regex_常量::匹配_默认值)
at/usr/include/boost/regex/v4/regex_match.hpp:100
#[my project]中的5 0x081ca3c1(this=0x2,request=0xb5706630)
在[我的项目来源]:127
[这里有更多电话]
现在我想检查一下在第127行的
#5
请求中的内容。请求是C类指针指向C++类对象的代码< >请求文件> /COD>,这是我的项目中定义的。我的函数的定义是
bool match\u request(request\u data*request)const


我应该在
gdb
中写些什么才能真正了解
请求的内容,就像程序出错之前一样?

好吧,你的
指向#5的这个
指针看起来不太健康,但除此之外,我认为你需要一个gdb教程:


好吧,你的
这个
指针指向#5看起来不太健康,但除此之外,我认为你需要一个GDB教程:


好吧,你的
这个
指针指向#5看起来不太健康,但除此之外,我认为你需要一个GDB教程:


好吧,你的
这个
指针指向#5看起来不太健康,但除此之外,我认为你需要一个GDB教程:

这就够了

(gdb) frame 5
(gdb) print *request
就这样

(gdb) frame 5
(gdb) print *request
就这样

(gdb) frame 5
(gdb) print *request
就这样

(gdb) frame 5
(gdb) print *request

请尝试
info locals
查看所有本地可用变量,并尝试
p request
查看此特定变量。我使用的GDB和LLDB命令列表:@maddening我不在断点,我在崩溃后和回溯时,所以
p request
只在当前上下文中打印
无符号“request”。
信息局部变量
返回
无局部变量。
尝试
信息局部变量
查看所有本地可用变量,和
p请求此特定变量的
。我使用的GDB和LLDB命令列表:@maddening我不在断点,我在崩溃后和回溯时,所以
p request
只在当前上下文中打印
无符号“request”。
信息局部变量
返回
无局部变量。
尝试
信息局部变量
查看所有本地可用变量,和
p请求此特定变量的
。我使用的GDB和LLDB命令列表:@maddening我不在断点,我在崩溃后和回溯时,所以
p request
只在当前上下文中打印
无符号“request”。
信息局部变量
返回
无局部变量。
尝试
信息局部变量
查看所有本地可用变量,和
p请求此特定变量的
。我使用的GDB和LLDB命令列表:@maddening我不在断点,我只是在崩溃后和回溯时,所以
p request
只在当前上下文中打印
无符号“request”。
信息局部变量
返回
无局部变量。