Remote Debugging Error
-
Hi all,
I am trying to remote debug a Beaglebone Black revision C(Debian Jessie), with Qt Creator installed in an Ubuntu 16.04 Host.
I am able to run an application on BBB. But I am not able to Debug it.
When I am attempting Debugging as per procedure http://doc.qt.io/qtcreator/creator-debugger-operating-modes.html.
But it always ended with the following error -
root@beaglebone:~# ./gdbserver :5555 simpleqt
Process simpleqt created; pid = 5491
Listening on port 5555
Remote debugging from host 192.168.7.1
simpleqt: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: no version information available (required by simpleqt)
simpleqt: /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5: no version information available (required by simpleqt)
No protocol specified
QXcbConnection: Could not connect to display :0.0Child terminated with signal = 0x6 (SIGABRT)
GDBserver exiting
root@beaglebone:~#This is the case even for a very simple qt program.
Thanks in advance for the solution.
Thanks & Regards,
Sajeevan.K -
I bet there is a flag or mismatch command in your gdbserver...
So, Do you have a good communication with your target? - At least with SSH?
Maybe this can help you: https://youtu.be/pYflLlXaPnE as reference -
Hi Charlie,
Thank You for the reply.
I tried to see the video. It is showing the video is unavailable.
I have a good communication with the target through SSH.
As You said, there may be some mismatches in flags.
So I attached a fe r settings in Qt Creator is as shown in - debugger settings.png
After that I am getting an error message as shown in screenshot - error message.png
Error Message is - The Upload process failed to start. Shell missing?
Even though I googled, I couldn't find a solution for this problem also. I just click Yes for this.
Then screen appears as shown in screenshot -
Debugging start.
But at this point when I press Continue(F5), then the error message appears in target system as shown in first mail. And in Qt Creator, execution is not reaching even to the next statement.Thanks in advance for the clue in solving this issue.
Thanks & Regards,
Sajeevan.K -
Can you update Qt and Qt Creator? And see what happens.
-
Hi Charlie,
I was trying to update Qt and Qt creator in my Ubuntu Host PC.
As per the post - https://askubuntu.com/questions/371920/how-to-upgrade-qt-creator - I tried to update Qt Creator. These steps -
sudo add-apt-repository ppa:ubuntu-sdk-team/ppa
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install qtcreator- were successfully completed. But the version number of the Qt Creator Software in my Ubuntu Host remains same - 3.5.1. If these steps of updating Qt Creator is wrong, please correct me.
About updating Qt for BBB
Earlier I was using linaro tool chain 4.9.4 and corresponding sysroot. Now I added linaro tool chain 7.2.1 and corresponding sysroot. Also once more I downloaded qt source code, this time qt-everywhere-opensource-src-5.9.3.tar.xz (earlier it was 5.8.0). With this combination, now there is an improvement.
Now the messages in BBB target is as shown below:./gdbserver :5555 simpleqt
Process simpleqt created; pid = 5021
Listening on port 5555
Remote debugging from host 192.168.7.1
simpleqt: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: no version information available (required by simpleqt)
simpleqt: /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5: no version information available (required by simpleqt)Child terminated with signal = 0x4 (SIGILL)
GDBserver exitingNow the error message is
Child terminated with signal = 0x4 (SIGILL).With this combination also, the problem is not solved. Looking for Your kind suggestions...
Thanks in advance.Thanks & Regards,
Sajeevan.K -
@Sajeevan-K You can simply use Qt Online Installer to install latest Qt and QtCreator.
-
Thank You for the reply.
Now I updated Qt and Qt Creator on line.With this updated Qt Creator, now I tried to debug.
There is an improvement from the old scenario.The Error Message "The upload process failed to start.Shell missing?" is not coming now. This improvement, improvement happened, after adding the Server Start Script in Start Debugger window.
And the remote_debug.sh is as shown below.
#!/bin/bash
set sysroot /opt/sysroot-eglibc-linaro-2017.01-arm-linux-gnueabihf
set solib-absolute-prefix /opt/sysroot-eglibc-linaro-2017.01-arm-linux-gnueabihf
set solib-search-path /opt/sysroot-eglibc-linaro-2017.01-arm-linux-gnueabihfHere also Debugging starts as indicated in attached screens. But when I press continue still the same problem - Child terminated with signal = 0x6 (SIGABRT) - exists as shown below
root@beaglebone:/home/debian# ./gdbserver :5555 simpleqt
Process simpleqt created; pid = 30664
Listening on port 5555
Remote debugging from host 192.168.7.1
simpleqt: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: no version information available (required by simpleqt)
simpleqt: /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5: no version information available (required by simpleqt)
No protocol specified
QXcbConnection: Could not connect to display :0.0Child terminated with signal = 0x6 (SIGABRT)
GDBserver exiting
root@beaglebone:/home/debian#Is this problem having any relationships with gdb versions in ubuntu host and BBB target.
In ubuntu host gdb version - 7.8 as shown below
sajeevank@sajeevank-Vostro-3559:/opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin$ arm-linux-gnueabihf-gdb
GNU gdb (Linaro GDB) 7.8-2014.09
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
strikethrough textIn BBB target gdb version - 7.7.1 as shown below
root@beaglebone:/home/debian# gdb
GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.htmlThese versions are exactly not equal.
Looking forward for Your valuable suggestions. Thanks in advance...
Thanks & Regards,
Sajeevan.K -
@Sajeevan-K said in Remote Debugging Error:
simpleqt: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: no version information available (required by simpleqt)
simpleqt: /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5: no version information available (required by simpleqt)Can you check the state of the libraries that are above? How do you install Qt in BBB?
-
@Sajeevan-K said in Remote Debugging Error:
The libraries libQt5Core and libQtWidgets are available in the folder /usr/lib/arm-linux-gnueabihf/
root@beaglebone:~# find / -name libQt5Core
/usr/lib/arm-linux-gnueabihf/libQt5Core.so.5.3.2
/usr/lib/arm-linux-gnueabihf/libQt5Core.so.5
/usr/lib/arm-linux-gnueabihf/libQt5Core.so.5.3
root@beaglebone:~# find / -name libQt5Widgets
/usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5.3.2
/usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5.3
/usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5
root@beaglebone:~#I was installing qt by using the command
apt-get install qt-sdk
root@beaglebone:~# apt-get install qt-sdk
Reading package lists... Done
Building dependency tree
Reading state information... Done
qt-sdk is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 174 not upgraded.
root@beaglebone:~#Thanks & Regards,
Sajeevan.K -
@Charlie_Hdz said in Remote Debugging Error:
no version information available
I did remote debugging with the Rpi once, those instructions can help you:
- Install the specific GDB version of your target in the host.
- This library was important ton install in the Rpi.
sudo apt-get install libncurses5:i386
- Transfer the binary file to the target.
- Make the binary to be runnable by chmod
- Run the GDB target version in the host in the "BBB" way.
If it does not work, try this way...
- I recommend you to try to debug a simple C++ program in a different enviroment (Eclipse f.i); this can give you some hints about which is the real problem.
Something that I investigated:
The "no version information available" means that the library version number is lower on the shared object
Can you compile your project to match those versions?
AFAIK, those are only warnings.
I'll focus in these log:
Child terminated with signal = 0x6 (SIGABRT)
but you also had
Child terminated with signal = 0x4 (SIGILL).I bet the computer is trying to execute an instruction that it doesn't understand. SIGILL and SIGABRT signals.
SIGABRT is commonly used by libc and other libraries to abort the programme in case of critical errors. For example, glibc sends an SIGABRT in case of a detected double-free or other heap corruptions.
-
Hi Charlie,
Thank You very much for Your help. With Your hints and suggestions, I could solve the issue.
Basic solution is - for debugging we have to use the same procedure of running the application, in target. i.e we have to use .xinitrc file and startx command ( which I am using for running the application in target ), even for debugging.
For running the application I was using the file .xinitrc, the contents of which is as shown below.
oclock -geometry +1450+920 -bg ivory -fg blue &
./simpleqt &
xhost +
exec /etc/alternatives/x-window-managerAnd I have to the startx command for running the application in target.i.e
root@beaglebone:~# startx
Now for debugging also I have to use the same procedure, but the contents of .xinitrc shall be slightly different, as shown below
oclock -geometry +1450+920 -bg ivory -fg blue &
./gdbserver 192.168.6.2:5555 simpleqt &
xhost +
exec /etc/alternatives/x-window-managerThank You very much again.
Thanks & Regards,
Sajeevan.K