Tracing help.

This commit is contained in:
Ben Vanik 2015-05-25 11:09:00 -07:00
parent 9607eef9d6
commit c616104574
2 changed files with 49 additions and 6 deletions

View 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.

View File

@ -26,16 +26,25 @@ namespace x64 {
#define ITRACE 0
#define DTRACE 0
#define TARGET_THREAD 1
#define TARGET_THREAD 4
#define IFLUSH() \
if (thread_state->thread_id() == TARGET_THREAD) fflush(stdout)
bool trace_enabled = true;
#if !DTRACE
#define IFLUSH() \
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;