Fixing breakpoints.

This commit is contained in:
Ben Vanik
2015-09-21 21:10:57 -07:00
parent 5d033f9cb3
commit 4c8634bc31
7 changed files with 42 additions and 32 deletions

View File

@@ -45,7 +45,8 @@ void CodeBreakpoint::ForEachHostAddress(
// TODO(benvanik): other function types.
assert_true(function->is_guest());
auto guest_function = reinterpret_cast<cpu::GuestFunction*>(function);
uintptr_t host_address = guest_function->MapSourceToCode(guest_address);
uintptr_t host_address =
guest_function->MapGuestAddressToMachineCode(guest_address);
assert_not_zero(host_address);
callback(host_address);
}

View File

@@ -608,7 +608,7 @@ void DebugWindow::DrawGuestFunctionSource() {
}
while (source_map_index < source_map.size() &&
source_map[source_map_index].source_offset != address) {
source_map[source_map_index].guest_address != address) {
++source_map_index;
}
if (source_map_index < source_map.size()) {
@@ -1423,13 +1423,14 @@ void DebugWindow::DrawBreakpointsPane() {
assert_not_null(function);
if (code_breakpoint->address_type() ==
CodeBreakpoint::AddressType::kGuest) {
NavigateToFunction(
code_breakpoint->guest_function(),
code_breakpoint->guest_address(),
function->MapSourceToCode(code_breakpoint->guest_address()));
NavigateToFunction(code_breakpoint->guest_function(),
code_breakpoint->guest_address(),
function->MapGuestAddressToMachineCode(
code_breakpoint->guest_address()));
} else {
NavigateToFunction(function, function->MapCodeToSource(
code_breakpoint->host_address()),
NavigateToFunction(function,
function->MapMachineCodeToGuestAddress(
code_breakpoint->host_address()),
code_breakpoint->host_address());
}
break;