find + grep 大家都会用了。
在有 debug_info 的可执行文件时,nm + addr2line 更合适
先使用 nm 找到某个符号的地址,比如 main
bash
nm qemu-6.0.0/build/qemu-system-riscv64 | grep "\bmain\b"
# 结果如下
00000000002bc410 T main
随后使用 addr2line 找到对应行号:
bash
addr2line -e qemu-6.0.0/build/qemu-system-riscv64 0x2bc410
# 结果如下
./qemu-6.0.0/build/../softmmu/main.c:48
直接得到行号,不用自己慢慢筛选 find + grep 的结果,也不用使用 gdb + break 去看。