Details
Description
I wrote a fairly simple widget based app using qtcreator 3.0, Qt5.2 under ubuntu 12.10 x86-64, I can run it perfectly in an android virtual device, but I can't debug it due to time out when waiting for pong file. The log message from logcat has been attached.
As we can see in the log text:
I/Qt JAVA ( 4662): DEBUGGER: extra parameters: Bundle[{debug_ping=true, gdbserver_socket=/data/data/org.qtproject.example.testAndroid/debug-socket, gdbserver_command=/data/data/org.qtproject.example.testAndroid/lib/gdbserver --multi +/data/data/org.qtproject.example.testAndroid/debug-socket, load_local_jars=jar/QtAndroid-bundled.jar:jar/QtAndroidAccessibility-bundled.jar:, load_local_libs=plugins/platforms/android/libqtforandroid.so:, use_local_qt_libs=true, libs_prefix=/data/local/tmp/qt/, ping_file=/data/data/org.qtproject.example.testAndroid/debug-ping, static_init_classes=:, pong_file=/data/local/tmp/qt/debug-pong-org.qtproject.example.testAndroid}]
I/Qt JAVA ( 4662): DEBUGGER: removing ping file /data/data/org.qtproject.example.testAndroid/debug-ping
I/Qt JAVA ( 4662): DEBUGGER: removing pong file /data/local/tmp/qt/debug-pong-org.qtproject.example.testAndroid
I/Qt JAVA ( 4662): DEBUGGER: starting /data/data/org.qtproject.example.testAndroid/lib/gdbserver --multi +/data/data/org.qtproject.example.testAndroid/debug-socket
I/Qt JAVA ( 4662): DEBUGGER: gdbserver started
I/Qt JAVA ( 4662): DEBUGGER: waiting for socket at /data/data/org.qtproject.example.testAndroid/debug-socket, attempt 0
I/Qt JAVA ( 4662): DEBUGGER: waiting for socket at /data/data/org.qtproject.example.testAndroid/debug-socket, attempt 1
I/Qt JAVA ( 4662): DEBUGGER: socket ok
I/Qt JAVA ( 4662): DEBUGGER: writing ping at /data/data/org.qtproject.example.testAndroid/debug-ping
I/Qt JAVA ( 4662): DEBUGGER: wrote ping
I/Qt JAVA ( 4662): DEBUGGER: waiting for pong at /data/local/tmp/qt/debug-pong-org.qtproject.example.testAndroid, attempt 0
I/Qt JAVA ( 4662): DEBUGGER: go to sleep
I/Qt JAVA ( 4662): DEBUGGER: waiting for pong at /data/local/tmp/qt/debug-pong-org.qtproject.example.testAndroid, attempt 1
I/Qt JAVA ( 4662): DEBUGGER: go to sleep
I/Qt JAVA ( 4662): DEBUGGER: waiting for pong at /data/local/tmp/qt/debug-pong-org.qtproject.example.testAndroid, attempt 2
I/Qt JAVA ( 4662): DEBUGGER: go to sleep
...
I/Qt JAVA ( 4662): DEBUGGER: waiting for pong at /data/local/tmp/qt/debug-pong-org.qtproject.example.testAndroid, attempt 148
I/Qt JAVA ( 4662): DEBUGGER: go to sleep
I/Qt JAVA ( 4662): DEBUGGER: waiting for pong at /data/local/tmp/qt/debug-pong-org.qtproject.example.testAndroid, attempt 149
I/Qt JAVA ( 4662): DEBUGGER: go to sleep
I/Qt JAVA ( 4662): DEBUGGER: time out when waiting for pong file
W/System.err( 4662): java.lang.Exception:
W/System.err( 4662): at org.qtproject.qt5.android.bindings.QtActivity.loadApplication(QtActivity.java:239)
W/System.err( 4662): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:522)
W/System.err( 4662): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:744)
W/System.err( 4662): at android.app.Activity.performCreate(Activity.java:5231)
W/System.err( 4662): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
W/System.err( 4662): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
W/System.err( 4662): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
W/System.err( 4662): at android.app.ActivityThread.access$800(ActivityThread.java:135)
W/System.err( 4662): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
W/System.err( 4662): at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err( 4662): at android.os.Looper.loop(Looper.java:136)
W/System.err( 4662): at android.app.ActivityThread.main(ActivityThread.java:5017)
W/System.err( 4662): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 4662): at java.lang.reflect.Method.invoke(Method.java:515)
W/System.err( 4662): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
W/System.err( 4662): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
W/System.err( 4662): at dalvik.system.NativeStart.main(Native Method)
The app time out when waiting for pong file. But I can debug the app in android virtual device in my another windows machine which is also installed with Qt5.2 and qtcreator 3.0.
I am curious about who is responsible for writing the pong file? I have took some time to read the code QtActivity.java, QtApplication.java and QtActivityDelegate.java, I found that in QtActivityDelegate.startApplication(), after the ping file has been written it just wait for the pong file. But I can't find the code writing the pong file. Is the pong file is expected to be written by gdbserver? If that is ture why the pong file was not written in my linux machine?