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