Fix single-stepping for native methods.
Change-Id: I1a70c27272aacb79871407a05d4538056f381e25
diff --git a/src/debugger.cc b/src/debugger.cc
index 61118eb..a456f23 100644
--- a/src/debugger.cc
+++ b/src/debugger.cc
@@ -1914,7 +1914,6 @@
DebugCallbackContext() {
last_pc_valid = false;
last_pc = 0;
- gSingleStepControl.dex_pcs.clear();
}
static bool Callback(void* raw_context, uint32_t address, uint32_t line_number) {
@@ -1950,11 +1949,16 @@
bool last_pc_valid;
uint32_t last_pc;
};
- DebugCallbackContext context;
+ gSingleStepControl.dex_pcs.clear();
const Method* m = gSingleStepControl.method;
- MethodHelper mh(m);
- mh.GetDexFile().DecodeDebugInfo(mh.GetCodeItem(), m->IsStatic(), m->GetDexMethodIndex(),
- DebugCallbackContext::Callback, NULL, &context);
+ if (m->IsNative()) {
+ gSingleStepControl.line_number = -1;
+ } else {
+ DebugCallbackContext context;
+ MethodHelper mh(m);
+ mh.GetDexFile().DecodeDebugInfo(mh.GetCodeItem(), m->IsStatic(), m->GetDexMethodIndex(),
+ DebugCallbackContext::Callback, NULL, &context);
+ }
//
// Everything else...