diff options
author | Kartik Agaram <vc@akkartik.com> | 2019-02-23 13:35:19 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2019-02-23 13:35:19 -0800 |
commit | e5998f74ac29bb4bf2aedfdd6fbea801ffdb08f6 (patch) | |
tree | 28b5476fa39c2791be3a89fce05f0847ed75c24d /subx/012elf.cc | |
parent | ed4e645306a3679cebe1ef273f3a33221d713f23 (diff) | |
download | mu-e5998f74ac29bb4bf2aedfdd6fbea801ffdb08f6.tar.gz |
4986 - spending some time improving SubX traces
Now that our test runs are getting longer, debugging is again becoming a bottleneck. Time to start using trace depths along with `mu browse-trace` from the top-level.
Diffstat (limited to 'subx/012elf.cc')
-rw-r--r-- | subx/012elf.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/subx/012elf.cc b/subx/012elf.cc index 47aba102..5220d18d 100644 --- a/subx/012elf.cc +++ b/subx/012elf.cc @@ -137,14 +137,17 @@ const int DATA_SEGMENT = 0x0a000000; // keep sync'd with `Heap.limit` in alloca const int STACK_SEGMENT = 0x0b000000; const int AFTER_STACK = 0x0c000000; const int ARGV_DATA_SEGMENT = 0x0c000000; +:(before "End Dump Info for Instruction") +//? dump_stack(); // slow :(code) void dump_stack() { - cerr << "stack:\n"; + ostringstream out; + trace(91, "run") << "stack:" << end(); for (uint32_t a = AFTER_STACK-4; a > Reg[ESP].u; a -= 4) - cerr << " 0x" << HEXWORD << a << " => 0x" << HEXWORD << read_mem_u32(a) << '\n'; - cerr << " 0x" << HEXWORD << Reg[ESP].u << " => 0x" << HEXWORD << read_mem_u32(Reg[ESP].u) << " <=== ESP\n"; + trace(91, "run") << " 0x" << HEXWORD << a << " => 0x" << HEXWORD << read_mem_u32(a) << end(); + trace(91, "run") << " 0x" << HEXWORD << Reg[ESP].u << " => 0x" << HEXWORD << read_mem_u32(Reg[ESP].u) << " <=== ESP" << end(); for (uint32_t a = Reg[ESP].u-4; a > Reg[ESP].u-40; a -= 4) - cerr << " 0x" << HEXWORD << a << " => 0x" << HEXWORD << read_mem_u32(a) << '\n'; + trace(91, "run") << " 0x" << HEXWORD << a << " => 0x" << HEXWORD << read_mem_u32(a) << end(); } inline uint32_t u32_in(uint8_t* p) { |