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 |
|||
(11 intermediate revisions by 2 users not shown) | |||
Line 16: | Line 16: | ||
==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> | ||
*add a condition: <code>break <file>:<line> if <ARG> == 0</code> | |||
*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> | ||
*print register: <code>print $<register_name></code> | |||
*pointer var: print <*var> | |||
*print memory: x <Oxlocation> | |||
*print register: print $<register_name> | |||
==SIGSEGV/Segmentation fault== | ==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> | ||
*source code: ctrl x ctrl A | GDB contains several views. You can see code source, ASM or register. | ||
*2 panels: ctrl x ctrl 1 | *source code: <code>ctrl x ctrl A</code> | ||
*3 panels: ctrl x ctrl 2 | *2 panels: <code>ctrl x ctrl 1</code> | ||
*3 panels: <code>ctrl x ctrl 2</code> | |||
{{PCSX2 Documentation Navbox}} |