gdb
1. 文档
官方参考文档:http://www.gnu.org/software/gdb/documentation/
2. 作用
GDB 做以下 4 件主要的事情来帮助您捕获程序中的 bug:
◼ 在程序启动之前指定一些可以影响程序行为的变量或条件
◼ 在某个指定的地方或条件下暂停程序
◼ 在程序停止时检查已经发生了什么
◼ 在程序执行过程中修改程序中的变量或条件,这样就可以体验修复一个bug 的成果,并继续了解其他 bug
3. 调试GDB的cpp源代码
文件名:typederivation.cpp
#include <iostream>
#include <typeinfo>
#include <vector>
#include<chrono>
#include<thread>
using namespace std;
template <typename T>
class Base {
public:
void func(T& container) {
m_it = container.begin();
}
private:
decltype(T().begin()) m_it; //注意这里
};
void testauto(){
int x = 0;
double y = 0.8;
cout << "y type:" << typeid(y).name() << "|" << y << endl;
auto *p1 = &x;
auto p2 = &x;
auto &r1 = x;
auto r2 = r1;
const auto n = x;
cout << "n type:" << typeid(n).name() << "|" << n << endl;
auto f = n;
cout << "f type:" << typeid(f).name() << "|" << f << endl;
const auto &s1 = x;
cout << "s1 type:" << typeid(s1).name() << "|" << s1 << endl;
auto &s2 = s1;
cout << "s2 type:" << typeid(s2).name() << "|" << s2 << endl;
auto s3 = s1;
cout << "s3 type:" <<