1. 從const unordered_map讀取對象
對于常量 unordered_map
秦爆,無法使用 operator[]
來讀取其中的值唇聘。
原因也很簡單懈词,對于map
而言童叠,如果 operator[]
操作的key不存在慎菲,將會鍵入默認(rèn)值嫁蛇。所以 operator[]
是非 const
的,顯然無法操作常量對象露该。
我們可以使用 at()
去獲取值睬棚,缺點是當(dāng)要查找的值不在映射中時,會引發(fā) std::out_of_range
異常解幼。因此抑党,可以使用如下方式:
const unordered_map<int, int> umap;
if (umap.find(key) != umap.end()) {
int value = umap.at(key);
}
參考:c++ - reading object from const unordered_map - Stack Overflow
2. disassemble
gdb下可以使用 disassemble/disass
命令進(jìn)行反匯編,用法如下:
// 指定函數(shù)撵摆,輸出整個函數(shù)的匯編指令
disassemble [Function]
// 指定地址底靠,輸出包含給定地址整個函數(shù)的匯編指令
disassemble [Address]
// 指定起始地址和結(jié)束地址,輸出地址之間的指令
disassemble [Start],[End]
// 指定從給定地址或函數(shù)開始反匯編的字節(jié)數(shù)
disassemble [Function],+[Length]
disassemble [Address],+[Length]
// 反匯編命令將顯示與反匯編指令相對應(yīng)的源代碼
disassemble /m [...]
// 反匯編命令將顯示所有反匯編指令的原始字節(jié)值
disassemble /r [...]
參考:GDB Command Reference - disassemble command
GitHub Blog 同步更新