PCSX2 Documentation/GNU Debugger Tips: Difference between revisions
Jump to navigation
Jump to search
PCSX2 Documentation/GNU Debugger Tips (view source)
Revision as of 17:04, 19 July 2015
, 19 July 2015no edit summary
No edit summary |
No edit summary |
||
(13 intermediate revisions by 2 users not shown) | |||
Line 12: | Line 12: | ||
*limit the trace to the Nth lastest: <code>backtrace <N></code> | *limit the trace to the Nth lastest: <code>backtrace <N></code> | ||
*go to a specific stack: <code>frame <STACK_ID></code> | *go to a specific stack: <code>frame <STACK_ID></code> | ||
*go up 1 frame: up | *go up 1 frame: <code>up</code> | ||
*go down 1 frame: down | *go down 1 frame: <code>down</code> | ||
==Step by step execution== | ==Step by step execution== | ||
execute 1 instruction :step | *execute 1 instruction: <code>step</code> | ||
execute 1 C line of instruction, functions are a 1 line instruction:next | *execute 1 C line of instruction, functions are a 1 line instruction: <code>next</code> | ||
Same for ASM: nexti and stepi | *Same for ASM: <code>nexti</code> and <code>stepi</code> | ||
continue execution: continue | *continue execution: <code>continue</code> | ||
Add breakpoint to stop program: | *Add breakpoint to stop program: <code>break <file>:<line></code> or <code>break <function></code> | ||
break <file>:<line> | *add a condition: <code>break <file>:<line> if <ARG> == 0</code> | ||
break <function> | *Print variable/memory/register basic var: <code>print <nowiki><var></nowiki> </code> | ||
add a condition: break <file>:<line> if <ARG> == 0 | *pointer var: <code>print <*var></code> | ||
Print variable/memory/register | *print memory: <code>x <Oxlocation></code> | ||
basic var: print <var> | *print register: <code>print $<register_name></code> | ||
pointer var: print <*var> | |||
print memory: x <Oxlocation> | ==SIGSEGV/Segmentation fault== | ||
print register: print $<register_name> | |||
SIGSEGV/Segmentation fault | |||
A program have a limited range of memory that it can access. When you try to read/write outside, the kernel generate an error named segmentation fault. It is a critical error and generally it just crash. It is a bit difficult on PCSX2 because recompiler use this mechanism for optimization. So segmentation fault inside recompiler are normal and expected. | A program have a limited range of memory that it can access. When you try to read/write outside, the kernel generate an error named segmentation fault. It is a critical error and generally it just crash. It is a bit difficult on PCSX2 because recompiler use this mechanism for optimization. So segmentation fault inside recompiler are normal and expected. | ||
You can control signal behavior with the handle command for example. | You can control signal behavior with the handle command for example. | ||
don't stop on SIGSEGV: handle SIGSEGV nostop | *don't stop on SIGSEGV: <code>handle SIGSEGV nostop</code> | ||
GDB basic gui | |||
==GDB basic gui== | |||
You can attach gdb to any process of your system. It will stop the process and show the current execution. | You can attach gdb to any process of your system. It will stop the process and show the current execution. | ||
hint: to get the pcsx2 process id: ps aux |grep pcsx2 | *hint: <code>to get the pcsx2 process id: ps aux |grep pcsx2</code> | ||
attach the process: attach <Process_ID> | *attach the process: <code>attach <Process_ID></code> | ||
GDB contains several views. You can see code source, ASM or register. | GDB contains several views. You can see code source, ASM or register. | ||
source code: ctrl x ctrl A | *source code: <code>ctrl x ctrl A</code> | ||
2 panels: ctrl x ctrl 1 | *2 panels: <code>ctrl x ctrl 1</code> | ||
3 panels: ctrl x ctrl 2 | *3 panels: <code>ctrl x ctrl 2</code> | ||
{{PCSX2 Documentation Navbox}} |