工作小结 23.04.20

1. 从const unordered_map读取对象
对于常量 unordered_map,无法使用 operator[] 来读取其中的值。
原因也很简单,对于map而言,如果 operator[] 操作的key不存在,将会键入默认值。所以 operator[] 是非 const 的,显然无法操作常量对象。
我们可以使用 at() 去获取值,缺点是当要查找的值不在映射中时,会引发 std::out_of_range 异常。因此,可以使用如下方式:

const unordered_map 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 命令进行反汇编,用法如下:

// 指定函数,输出整个函数的汇编指令
disassemble [Function]

// 指定地址,输出包含给定地址整个函数的汇编指令
disassemble [Address]

// 指定起始地址和结束地址,输出地址之间的指令
disassemble [Start],[End]

// 指定从给定地址或函数开始反汇编的字节数
disassemble [Function],+[Length]
disassemble [Address],+[Length]

// 反汇编命令将显示与反汇编指令相对应的源代码
disassemble /m [...]

// 反汇编命令将显示所有反汇编指令的原始字节值
disassemble /r [...]

参考:GDB Command Reference - disassemble command


GitHub Blog 同步更新

版权声明:
作者:Zad
链接:https://www.techfm.club/p/43326.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>