ベストアンサー1
strip
バイナリ記号がpedされていますか?その場合、シンボルテーブルもなく、シンボルを見つける可能性もありません。readelf
私のhello
バイナリはここで見つけることができます。するシンボルテーブルがあります:
$ readelf -S hello | grep -i symtab
[28] .symtab SYMTAB 0000000000000000 000018f8
$
また、GDBを実行するとプログラムは実際に起動しますか?シンボルテーブルがロードされるまで、このシンボルを確認できないようです。 GDBを初めて起動するときはロードされませんが、クリックするとロードする必要がありますmain()
。main()
プログラムにブレークポイントを配置してrun
ブレークmain()
ポイントに達すると、変数を調べることができます。
Reading symbols from hello...(no debugging symbols found)...done.
(gdb) x/s *((char **)environ)
No symbol table is loaded. Use the "file" command.
(gdb) b main
Breakpoint 1 at 0x4005c8
(gdb) r
Starting program: /home/ubuntu/hello
Breakpoint 1, 0x00000000004005c8 in main ()
(gdb) x/s *((char **)environ)
0x7fffffffe38f: "XDG_VTNR=7"
(gdb)