Reply 20 of 38, by superfury
Two files are logged simultaneously:
cpu.log contains the locations jumped to at each INT and IRET, as well as the source location of the INT instructions(if any, depending on the errorcode(-1 for normal INT instructions, othe values for Protected mode exceptions, it's the error code pushed on the stack if not -1).
debugger.log contains the full instruction log, which includes a copy of cpu.log interleaved at the points they occur(before the originated instruction, except when caused by fetching instruction errors(e.g. a exception raised by the opcode fetching routine, like instructions fetching out of CS limit bounds)). It contains the writes and reads from memory before every instruction, as well as the instruction executed and the current register states before that instruction is executed. Since I don't know which point the faults is caused by, I've simply made a full log(to have all neccesary information included). Although I could leave the register data out, this would omit nessecary information(e.g. when multiple registers are used to index into memory(e.g. [BX+SI] operands). I think you might find the problem by using the cpu.log file to find the first error location, then finding that entry in the full debugger.log file and backtracing the error through backward search operations on that piece of memory and related parts.
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io