Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-16678

Debugger shows "continue" action instead of "interrupt" action when debugging on android

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P3: Somewhat important
    • Qt Creator 4.14.0
    • Qt Creator 4.1.0-beta1
    • Debugger
    • None

    Description

      Using the combined QML/JS and C++ debugger on android for a "hello world" QML application, I get the "continue" icon instead of the "interrupt" icon after starting the process. The process can easily be interrupted by pressing this button, and then it stays in the "continue" state. Pressing it again, continues the process and changes the icon to "interrupt" state.

      When not interrupting the process, after 40s I get a message box stating that gdb hasn't processed a command for 40s, with the option to stop debugging or give gdb more time.

      After uncommenting line 2545 in debuggerplugin.cpp, I get the following debug output from QtCreator, when just starting the application through the debugger:

          PLUGIN SET STATE:  "DebuggerNotReady"
          PLUGIN SET STATE:  "EngineSetupRequested"
          PLUGIN SET STATE:  "EngineSetupRequested"
          SOFT ASSERT: "d->remoteSetupState() == RemoteSetupNone || d->remoteSetupState() == RemoteSetupSucceeded" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\debuggerengine.cpp, line 789
          Debugger::Internal::GdbRemoteServerEngine(0x115c6268, name = "GdbEngine") remoteSetupState 1
          SOFT ASSERT: "d->remoteSetupState() == RemoteSetupNone || d->remoteSetupState() == RemoteSetupSucceeded" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\debuggerengine.cpp, line 789
          Debugger::Internal::QmlCppEngine(0x13d400a8, name = "QmlCppEngine") remoteSetupState 1
          PLUGIN SET STATE:  "EngineSetupOk"
          PLUGIN SET STATE:  "InferiorSetupRequested"
          SOFT ASSERT: "state() == EngineSetupOk" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\debuggerengine.cpp, line 800
          *** UNEXPECTED STATE TRANSITION:  Debugger::Internal::QmlEngine(0x12849cc0, name = "QmlEngine") "State changed from EngineSetupRequested(1) to InferiorSetupRequested(4)"
          SOFT ASSERT: "state() == EngineSetupRequested || state() == EngineSetupFailed || state() == DebuggerFinished" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\debuggerengine.cpp, line 893
          Debugger::Internal::QmlCppEngine(0x13d400a8, name = "QmlCppEngine") "InferiorSetupRequested"
          SOFT ASSERT: "state() == EngineSetupRequested" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\gdb\remotegdbserveradapter.cpp, line 485
          "InferiorSetupOk"
          SOFT ASSERT: "state() == EngineSetupRequested || state() == EngineSetupFailed || state() == DebuggerFinished" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\debuggerengine.cpp, line 893
          Debugger::Internal::GdbRemoteServerEngine(0x115c6268, name = "GdbEngine") "InferiorSetupOk"
          SOFT ASSERT: "state() == EngineSetupRequested || state() == EngineSetupFailed || state() == DebuggerFinished" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\debuggerengine.cpp, line 893
          Debugger::Internal::QmlEngine(0x12849cc0, name = "QmlEngine") "InferiorSetupOk"
          SOFT ASSERT: "state() == EngineSetupRequested" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\debuggerengine.cpp, line 791
          Debugger::Internal::QmlEngine(0x12849cc0, name = "QmlEngine") "InferiorSetupOk"
          *** UNEXPECTED STATE TRANSITION:  Debugger::Internal::QmlEngine(0x12849cc0, name = "QmlEngine") "State changed from InferiorSetupOk(6) to EngineSetupOk(3)"
          PLUGIN SET STATE:  "InferiorSetupOk"
          PLUGIN SET STATE:  "EngineRunRequested"
          SOFT ASSERT: "state() == InferiorSetupOk" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\debuggerengine.cpp, line 838
          *** UNEXPECTED STATE TRANSITION:  Debugger::Internal::QmlEngine(0x12849cc0, name = "QmlEngine") "State changed from EngineSetupOk(3) to EngineRunRequested(7)"
          PLUGIN SET STATE:  "InferiorStopOk"
          PLUGIN SET STATE:  "InferiorRunRequested"
          SOFT ASSERT: "state() == InferiorRunOk" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\debuggerengine.cpp, line 1009
          Debugger::Internal::GdbRemoteServerEngine(0x115c6268, name = "GdbEngine") "InferiorRunRequested"
          *** UNEXPECTED STATE TRANSITION:  Debugger::Internal::GdbRemoteServerEngine(0x115c6268, name = "GdbEngine") "State changed from InferiorRunRequested(10) to InferiorStopOk(14)"
          PLUGIN SET STATE:  "InferiorRunFailed"
          PLUGIN SET STATE:  "InferiorStopOk"
          UNEXPECTED STATE: 14  WANTED: 10 IN D:\qtcreator-super\qtcreator\src\plugins\debugger\gdb\gdbengine.cpp:1740
          *** UNEXPECTED STATE TRANSITION:  Debugger::Internal::GdbRemoteServerEngine(0x115c6268, name = "GdbEngine") "State changed from InferiorStopOk(14) to InferiorRunOk(11)"
          SOFT ASSERT: "false" in file D:\qtcreator-super\qtcreator\src\plugins\debugger\qml\qmlcppengine.cpp, line 559
          "InferiorStopOk"
      

      I cannot make sense of all the InferiorStopOk transitions, as the process doesn't get stopped there. Also, I don't understand which state transitions are supposed to be allowed and which ones are supposed to be forbidden and for what reasons.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            hjk hjk
            ulherman Ulf Hermann
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes