mirror of
https://github.com/xenia-project/xenia.git
synced 2024-11-23 19:49:48 +00:00
Tracing help.
This commit is contained in:
parent
9607eef9d6
commit
c616104574
34
docs/instruction_tracing.md
Normal file
34
docs/instruction_tracing.md
Normal file
@ -0,0 +1,34 @@
|
||||
In x64_tracers.cc:
|
||||
|
||||
Enable tracing:
|
||||
```
|
||||
#define ITRACE 1 <--- for only ppc instructions
|
||||
#define DTRACE 1 <--- add HIR data
|
||||
```
|
||||
|
||||
If tracing data, run with the following flags:
|
||||
```
|
||||
--store_all_context_values
|
||||
```
|
||||
|
||||
By default, tracing will start at the beginning and only for the specified
|
||||
thread.
|
||||
|
||||
Change traced thread by thread creation ID:
|
||||
```
|
||||
#define TARGET_THREAD 4
|
||||
```
|
||||
|
||||
To only trace at a certain point, change default trace flag to false:
|
||||
```
|
||||
bool trace_enabled = true;
|
||||
```
|
||||
Add a breakpoint:
|
||||
```
|
||||
--break_on_instruction=0x821009A4
|
||||
```
|
||||
On break, add the following to the Watch window and set it to true:
|
||||
```
|
||||
xe::cpu::backend::x64::trace_enabled
|
||||
```
|
||||
Continue, and watch stuff appear in the log.
|
@ -26,16 +26,25 @@ namespace x64 {
|
||||
#define ITRACE 0
|
||||
#define DTRACE 0
|
||||
|
||||
#define TARGET_THREAD 1
|
||||
#define TARGET_THREAD 4
|
||||
|
||||
bool trace_enabled = true;
|
||||
|
||||
#if !DTRACE
|
||||
#define IFLUSH() \
|
||||
if (thread_state->thread_id() == TARGET_THREAD) fflush(stdout)
|
||||
if (trace_enabled && thread_state->thread_id() == TARGET_THREAD) \
|
||||
fflush(stdout)
|
||||
#else
|
||||
#define IFLUSH()
|
||||
#endif
|
||||
#define IPRINT \
|
||||
if (thread_state->thread_id() == TARGET_THREAD) printf
|
||||
#define DFLUSH() IFLUSH()
|
||||
if (trace_enabled && thread_state->thread_id() == TARGET_THREAD) printf
|
||||
#define DFLUSH() \
|
||||
if (trace_enabled && thread_state->thread_id() == TARGET_THREAD) \
|
||||
fflush(stdout)
|
||||
#define DPRINT \
|
||||
DFLUSH(); \
|
||||
if (thread_state->thread_id() == TARGET_THREAD) printf
|
||||
if (trace_enabled && thread_state->thread_id() == TARGET_THREAD) printf
|
||||
|
||||
uint32_t GetTracingMode() {
|
||||
uint32_t mode = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user