2013-05-31 4 views
4

Используя Qt Creator 2.7.1 и Qt 4.8.4, я создал Qt-библиотеку и простое приложение Qt, которое динамически связывается с этой библиотекой. Я пытаюсь удаленно развертывать и отлаживать свое приложение и входить в свои функции библиотеки, когда я их вызываю. Я могу успешно установить точки останова и отлаживать удаленно, но я не могу войти в свои функции библиотеки с помощью отладчика (gdb). Когда я первый удаленно запустить мое приложение с помощью QtCreator в режиме отладки, я встретился со следующими предупреждениями:Qt Creator 2.7.1 и Qt 4.8.4 Не удается удаленно отлаживать библиотеку

Could not load shared library symbols for 7 libraries, e.g. libcustom-stuff.so.1. 
Use the "info sharedlibrary" command to see the complete listing. 
Do you need "set solib-search-path" or "set sysroot"? 

Мой отладчик настраивается с помощью QtCreator, как показано в этих изображениях (Обратите внимание, что я переключился как «Target Path "и 'Путь' в изображении # 3, но это не помогло: enter image description here enter image description here enter image description here

Мой 'Комплект' настроен следующим образом:

enter image description here

В «Debugger Вход» в Qt Creator Я вошел в «команда»:

info sharedlibrary 

На что я получил ответ:

>~"From  To   Syms Read Shared Object Library\n" 
>~"0x400007e0 0x40011bf0 Yes   /home/user/proj/output/buildroot/host/usr/arm-buildroot-linux-gnueabi/sysroot/lib/ld-linux.so.3\n" 
>~"      No   libcustom-stuff.so.1\n" 
>~"0x4006d018 0x400d7124 Yes   /home/user/proj/output/buildroot/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libQtDBus.so.4\n" 
>~"0x401065c4 0x4013dd18 Yes   /home/user/proj/output/buildroot/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libQtXml.so.4\n" 
>~"0x40172430 0x4024c1b4 Yes   /home/user/proj/output/buildroot/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libQtNetwork.so.4\n" 

Я также гарантирующую как библиотека и приложение были построены:

CONFIG+=declarative_debug 

В «Compile Output» панели как для библиотеки и приложения я вижу «-g» флаг.

Они оба находятся в том же каталоге в файловой системе, что и происходит! Howcome Я могу отлаживать и устанавливать точки останова в приложении, но не входить в вызовы библиотеки? Любые идеи приветствуются.

UPDATE:

Согласно предложению kikeenrique, я попытался загрузить отладочные символы с моей Ubuntu Host (не целевой ARM):

GNU gdb (Ubuntu/Linaro 7.4-0~69~lucid1) 7.4 
Copyright (C) 2012 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. Type "show copying" 
and "show warranty" for details. 
This GDB was configured as "i486-linux-gnu". 
For bug reporting instructions, please see: 
<http://www.gnu.org/software/gdb/bugs/>... 
Welcome to Fluke GDB Init Script for QtCreator 
Reading symbols from /home/user/proj/output/exported-nfs/home/user/libcustom-stuff.so.1.0.0...done. 
(gdb) 

Кажется, GDB может загрузить символы в наименее ..

ответ

6

Вы используете другую архитектуру для своего удаленного приложения?

Если они разные, вам нужно будет использовать один и тот же сервер gdb и клиентскую арку.

Попробуйте установить LD_LIBRARY_PATH в свой проект-> построить & Run-> построить среду с указанием пути к вашей библиотеке.

+0

Да удаленная арка - это ARM. Я могу отлично отлаживать свое основное приложение, но не могу войти в мою библиотеку (также созданную для ARM) из отладки моего основного приложения. – PhilBot

+0

@philbot Попробуйте загрузить свой файл символов вручную в gdb (command symbol-file path/to/your/library). Каков путь для libcustom-stuff.so? – kikeenrique

+0

Я могу загрузить их вручную с моего хост-компьютера - см. Мой отредактированный пост выше. И приложение, и библиотека находятся в/home/user на целевом сервере. – PhilBot

Смежные вопросы