gdb调试技巧及报错处理

一、在gdb模式下

b 函数内
p 函数
可进入函数断点处

二、commands用处

三、打印整个数组

p *(yourVector._M_impl._M_start)@yourVector.size()

四、自动循环打印数组值

五、gdb a syntax error in expression, near `>>::value_type *) 0x6c4e9000'

由于maximal munch
[https://www.bilibili.com/read/cv3843358/](C++用户定义字面量和最大吞噬(maximal munch))
gdb将">>"识别成右移操作符,故需要将表达式改成"> >"
类似的,有

用这样的方式声明一个二维数组
vector<vector<Point2f>>
时,在编译的时候会提示
error: ‘>>’ should be ‘> >’ within a nested template argument list
其原因在Essentila C++里面有讲到,是因为编译是基于所谓的maximal munch规则,规则要求,每个符号序列总是以合法符号序列中最长的那个解释。 因为>>是个合法的运算符,所以编译时会被看作是>>符号。
举另外一个例子
a+++p
会被解释为a++ +p
posted @ 2021-05-11 16:40  HKSun  阅读(252)  评论(0编辑  收藏  举报