[haiku-commits] r39202 - haiku/trunk/src/apps/debugger

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 30 Oct 2010 13:45:04 +0200 (CEST)

Author: bonefish
Date: 2010-10-30 13:45:04 +0200 (Sat, 30 Oct 2010)
New Revision: 39202
Changeset: http://dev.haiku-os.org/changeset/39202

Modified:
   haiku/trunk/src/apps/debugger/ThreadHandler.cpp
Log:
Added TODO.


Modified: haiku/trunk/src/apps/debugger/ThreadHandler.cpp
===================================================================
--- haiku/trunk/src/apps/debugger/ThreadHandler.cpp     2010-10-30 11:31:01 UTC 
(rev 39201)
+++ haiku/trunk/src/apps/debugger/ThreadHandler.cpp     2010-10-30 11:45:04 UTC 
(rev 39202)
@@ -263,10 +263,20 @@
        TRACE_CONTROL("  ip: %#llx\n", frame->InstructionPointer());
 
        // When the thread is in a syscall, do the same for all step kinds: 
Stop it
-       // when it return by means of a breakpoint.
+       // when it returns by means of a breakpoint.
        if (frame->Type() == STACK_FRAME_TYPE_SYSCALL) {
                // set a breakpoint at the CPU state's instruction pointer 
(points to
                // the return address, unlike the stack frame's instruction 
pointer)
+// TODO: This is doesn't work correctly anymore. When stepping over a "syscall"
+// instruction the thread is stopped twice. The after the first step the PC is
+// incorrectly shown at the "syscall" instruction. Then we step again and are
+// stopped at the temporary breakpoint after the "syscall" instruction. There
+// are two problems. The first one is that we don't (cannot?) discriminate
+// between the thread being in a syscall (like in a blocking syscall) and the
+// thread having been stopped (or singled-stepped) at the end of the syscall.
+// The second issue is that the temporary breakpoint is probably not necessary
+// anymore, since single-stepping over "syscall" instructions should just work
+// as expected.
                status_t error = _InstallTemporaryBreakpoint(
                        frame->GetCpuState()->InstructionPointer());
                if (error != B_OK) {


Other related posts:

  • » [haiku-commits] r39202 - haiku/trunk/src/apps/debugger - ingo_weinhold