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/010---vm.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/010---vm.cc')
-rw-r--r-- | subx/010---vm.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/subx/010---vm.cc b/subx/010---vm.cc index 3af4a579..0d30f3cd 100644 --- a/subx/010---vm.cc +++ b/subx/010---vm.cc @@ -297,13 +297,12 @@ void run_one_instruction() { uint8_t op=0, op2=0, op3=0; // Run One Instruction if (Dump_trace) { - cerr << "registers: "; dump_registers(); -//? dump_stack(); // for debugging; not defined until later layer + // End Dump Info for Instruction } trace(90, "run") << "inst: 0x" << HEXWORD << EIP << end(); op = next(); - if (Dump_trace) cerr << "opcode: " << HEXBYTE << NUM(op) << '\n'; + trace(90, "run") << "opcode: " << HEXBYTE << NUM(op) << end(); switch (op) { case 0xf4: // hlt EIP = End_of_program; @@ -366,11 +365,14 @@ inline uint8_t next() { } void dump_registers() { + ostringstream out; + out << "registers: "; for (int i = 0; i < NUM_INT_REGISTERS; ++i) { - if (i > 0) cerr << "; "; - cerr << " " << i << ": " << std::hex << std::setw(8) << std::setfill('_') << Reg[i].u; + if (i > 0) out << "; "; + out << " " << i << ": " << std::hex << std::setw(8) << std::setfill('_') << Reg[i].u; } - cerr << " -- SF: " << SF << "; ZF: " << ZF << "; OF: " << OF << '\n'; + out << " -- SF: " << SF << "; ZF: " << ZF << "; OF: " << OF; + trace(90, "run") << out.str() << end(); } //: start tracking supported opcodes |