gccコンパイラの動作を理解するために、アセンブリ内のcプログラムをデバッグしています。 $ fsセグメントレジスタを読んでx/x $ fsを使用したいのですが、メモリにアクセスできないと言います。 i386:86_64上のセグメント、汎用、および制御レジスタを含むどのレジスタでも、どのように読み出すことができますか?gdbですべてのレジスタの値を読み取るにはどうすればよいですか?
6
A
答えて
11
info registers
プリントアウトのレジスタの値は:
(gdb) info registers
rax 0x7ffff7731ec8 140737344904904
rbx 0x0 0
rcx 0x0 0
rdx 0x7fffffffd618 140737488344600
rsi 0x7fffffffd608 140737488344584
rdi 0x1 1
rbp 0x0 0x0
rsp 0x7fffffffd528 0x7fffffffd528
r8 0x7ffff7730300 140737344897792
r9 0x7ffff7dec250 140737351959120
r10 0x7fffffffd390 140737488343952
r11 0x7ffff73d0b50 140737341360976
r12 0x400be0 4197344
r13 0x7fffffffd600 140737488344576
r14 0x0 0
r15 0x0 0
rip 0x402330 0x402330 <main>
eflags 0x246 [ PF ZF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb)
3
レジスタの読み取り/設定には、p
およびset
コマンドを使用する必要があります。レジスタの名前はマシンごとに異なります。 infoレジスタを使用して、マシンで使用されている名前を確認してください。例の詳細については、GDBマニュアルのregistersセクションを参照してください。
$fs
レジスタの値を印刷するには、この操作を行うことができます。
(gdb) p/x $fs
$1 = 0x0
何x
コマンドがメモリを検討しているん。しかし、あなたがそれをすることができない場合、場合があります。例えば、アドレスによって示されるメモリが保護されている場合。ですから、仮想アドレス0x0
でメモリを調べるしようとすると、GDBは明らかにそうすることを拒否し、例えば:
(gdb) x/x $fs
0x0: Cannot access memory at address 0x0
はそれがお役に立てば幸いです。がんばろう!あなたは私が考えて求めているものである私にとって
9
info all-registers
はあなたにFPUレジスタ・スタック、XMMレジスタを含むすべてのレジスタ値を示します。
(gdb) i all-r
rax 0x2aaaaace62ce 46912498459342
rbx 0x2aab18e71290 46914345570960
rcx 0x2aaab2020d60 46912619285856
rdx 0xffffffffffd934ee -2542354
rsi 0x2aab18ec7a40 46914345925184
rdi 0xa 10
rbp 0x2aab18e6f000 0x2aab18e6f000
rsp 0x2aab18e6f000 0x2aab18e6f000
r8 0xe 14
r9 0x2aab18eb1f08 46914345836296
r10 0x2aaab9085000 46912737136640
r11 0x0 0
r12 0x2aab18ec7170 46914345922928
r13 0x477f3280 1199518336
r14 0x7 7
r15 0x2aaada787000 46913298132992
rip 0x2aaaaae3b18e 0x2aaaaae3b18e <flt_fadd+4>
eflags 0x283 643
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
st0 10 (raw 0x4002a000000000000000)
st1 3 (raw 0x4000c000000000000000)
st2 0 (raw 0x00000000000000000000)
st3 0 (raw 0x00000000000000000000)
st4 0 (raw 0x00000000000000000000)
st5 0 (raw 0x00000000000000000000)
st6 0 (raw 0x00000000000000000000)
st7 0 (raw 0x00000000000000000000)
fctrl 0x137f 4991
fstat 0x7000 28672
ftag 0xc0 192
fiseg 0xaae3afe5 -1427918875
fioff 0x2aaa 10922
foseg 0x18e6ee48 417787464
fooff 0x2aab 10923
fop 0x704 1796
xmm0 {f = {0x0, 0x6, 0x0, 0x0}} {f = {0, 6.48876953, 0, 0}}
xmm1 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm2 {f = {0x0, 0x1c0, 0x0, 0x0}} {f = {0, 448, 0, 0}}
xmm3 {f = {0x0, 0x1, 0x0, 0x0}} {f = {0, 1.75, 0, 0}}
xmm4 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm5 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm6 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm7 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm8 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm9 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm10 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm11 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm12 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm13 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm14 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm15 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
mxcsr 0x1fa0 8096
関連する問題
- 1. gdbの ".cshrc"の読み込みを停止するにはどうすればよいですか?
- 2. i7プロセッサコード解体のgdbでメモリアドレスを読み取るにはどうすればいいですか?
- 3. S3バケット内のすべてのアイテムのメタデータを読み取るにはどうすればよいですか?
- 4. freadを使用してファイル値を値で読み取るにはどうすればよいですか?
- 5. コロナSDKのファイルから値を読み込み/取得するにはどうすればよいですか?
- 6. ERDのブリッジエンティティを読み取るにはどうすればよいですか?
- 7. javascriptでJSESSIONIDを読み取るにはどうすればよいですか?
- 8. QSettingsを使用してWindowsレジストリ(デフォルト)の値を読み取るにはどうすればよいですか?
- 9. 値とXMLノードの値を読み取って値が正しいかどうか調べるにはどうすればいいですか
- 10. Pythonでdataframeから単一の値を読み取るにはどうすればよいですか?
- 11. Nagios私のコマンドでファイルから属性値を読み取るにはどうすればよいですか?
- 12. JBoss FuseのBlueprint XMLでプロパティファイルから値を読み取るにはどうすればよいですか?
- 13. ファイルの位置インジケータで単一の値を読み取るにはどうすればよいですか?
- 14. Pythonで受け取った要求値を読み取るにはどうすればよいですか?
- 15. Zookeeperトランザクションログを読み取るにはどうすればよいですか?
- 16. CloudKitエラーを読み取るにはどうすればよいですか?
- 17. Pubnubの読み取り/未読のカウントを取得するにはどうすればよいですか?
- 18. 実行時に-javaagentで渡された値を読み取るにはどうすればよいですか?
- 19. iPython 5で色を読み取れるようにするにはどうすればよいですか?
- 20. gdbのプロセスのすべてのメモリを検索するにはどうすればよいですか?
- 21. Pythonのリストから1つの値を読み取るにはどうすればよいですか?
- 22. 2次元配列の値を読み取るにはどうすればよいですか? VBAで
- 23. NXT超音波センサーでセンチメートルの値を読み取るにはどうすればよいですか?
- 24. iOSプロジェクトでRealm変数の値を読み取るにはどうすればよいですか?
- 25. フォルダ内のすべてのファイルが再帰的に読み取られるかどうかを確認するにはどうすればよいですか?
- 26. サードパーティのCookieを読み取るにはどうすればいいですか?
- 27. Javaのファイルから数値を読み取るにはどうすればよいですか?
- 28. Firebaseの値からデータを読み取るにはどうすればよいですか?
- 29. gdbの構造体値を読み取るには?例えば
- 30. 実行中にスペースを読み取れるようにするにはどうすればよいですか?
ありがとうございました!私はチュートリアルに従っていましたが、なぜx/x $ regを使用しているのか分かりませんでした。それは物事をクリアする。 –