Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I print the gdtr and gdt descriptor under gdb?

I want to use gdb to see my GDTR/LDTR/TTR and segment register

invisiable part(x86) so in gdb I enter "p/x $gdtr"....etc but the result is "$6 = Value can't be converted to integer" and in gdb I enter "p/x $cs" the only result is the CS, just visiable part

can anyone tell me how to view these value??

thanks for your answer

like image 524
Colin Avatar asked Feb 01 '15 14:02

Colin


1 Answers

If GDB had such a function then this function would only work if GDB was able to read the GDTR using the SGDT instruction. This would mean that GDB had to run in ring 0.

Neither Linux nor Windows nor Mac OS allows running applications (like GDB) in ring 0 so it will not work for local applications.

If you use remote debugging (you debug another computer or a virtual machine using an RS-232 or TCP/IP connection): The default protocol used for remote debugging does not specify packets for reading the GDTR.

In the case of remote debugging the backend (piece of code on the debugged computer) may define non-standard features using the "monitor" command. You would be able to implement such a feature using a command like "monitor readspr gdtr".

like image 118
Martin Rosenau Avatar answered Sep 28 '22 04:09

Martin Rosenau