mirror of
https://github.com/xenia-project/xenia.git
synced 2024-11-27 13:30:44 +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 ITRACE 0
|
||||||
#define DTRACE 0
|
#define DTRACE 0
|
||||||
|
|
||||||
#define TARGET_THREAD 1
|
#define TARGET_THREAD 4
|
||||||
|
|
||||||
#define IFLUSH() \
|
bool trace_enabled = true;
|
||||||
if (thread_state->thread_id() == TARGET_THREAD) fflush(stdout)
|
|
||||||
|
#if !DTRACE
|
||||||
|
#define IFLUSH() \
|
||||||
|
if (trace_enabled && thread_state->thread_id() == TARGET_THREAD) \
|
||||||
|
fflush(stdout)
|
||||||
|
#else
|
||||||
|
#define IFLUSH()
|
||||||
|
#endif
|
||||||
#define IPRINT \
|
#define IPRINT \
|
||||||
if (thread_state->thread_id() == TARGET_THREAD) printf
|
if (trace_enabled && thread_state->thread_id() == TARGET_THREAD) printf
|
||||||
#define DFLUSH() IFLUSH()
|
#define DFLUSH() \
|
||||||
|
if (trace_enabled && thread_state->thread_id() == TARGET_THREAD) \
|
||||||
|
fflush(stdout)
|
||||||
#define DPRINT \
|
#define DPRINT \
|
||||||
DFLUSH(); \
|
DFLUSH(); \
|
||||||
if (thread_state->thread_id() == TARGET_THREAD) printf
|
if (trace_enabled && thread_state->thread_id() == TARGET_THREAD) printf
|
||||||
|
|
||||||
uint32_t GetTracingMode() {
|
uint32_t GetTracingMode() {
|
||||||
uint32_t mode = 0;
|
uint32_t mode = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user