工作小结 23.04.20

1. 从const unordered_map读取对象
对于常量 unordered_map,无法使用 operator[] 来读取其中的值。
原因也很简单,对于map而言,如果 operator[] 操作的key不存在,将会键入默认值。所以 operator[] 是非 const 的,显然无法操作常量对象。
我们可以使用 at() 去获取值,缺点是当要查找的值不在映射中时,会引发 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 命令进行反汇编,用法如下:

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

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

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

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

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

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

参考:GDB Command Reference - disassemble command


GitHub Blog 同步更新

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容