Как отладить Fiware-Orion - PullRequest
       79

Как отладить Fiware-Orion

2 голосов
/ 15 марта 2020

Я новичок в этой области.

Я установил Fiware-orion через source на свою виртуальную машину (centOS), перейдя по ссылке ниже: https://fiware-orion.readthedocs.io/en/master/admin/build_source/index.html. В настоящее время я работаю над проблемой Fiware-Orion, но я не знаю, как отлаживать Fiware-Orion. Я искал в Google и Официальной документации Fiware-Orion, но я не нашел относительной документации / материала, относящегося к отладке Fiware-Orion.

Я нашел некоторые команды, связанные с отладкой Orion (но я не знаю, правильны ли эти команды или нет), и я следую этим командам:

-> Сначала устанавливается orion из источника и mongoDB,

  1. make di
  2. ./BUILD_DEBUG/src/app/contextBroker/contextBroker -port 1026
  3. curl localhost:1026/version
  4. gdb ./BUILD_DEBUG/src/app/contextBroker/contextBroker -tui
  5. b (lineNo)
  6. run

    [root@localhost fiware-orion]# gdb ./BUILD_DEBUG/src/app/contextBroker/contextBroker

    GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-100.el7
    Copyright (C) 2013 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 "x86_64-redhat-linux-gnu".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Reading symbols from /root/workingDir/fiware-orion/BUILD_DEBUG/src/app/contextBroker/contextBroker...done.
    
    (gdb) b 101
    Breakpoint 1 at 0x6033c9: file /root/workingDir/fiware-orion/src/app/contextBroker/contextBroker.cpp, line 101.
    
    (gdb) run
    Starting program: /root/workingDir/fiware-orion/./BUILD_DEBUG/src/app/contextBroker/contextBroker
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib64/libthread_db.so.1".
    
    Breakpoint 1, fileExists (path=0xbfc380 <pidPath> "/tmp/contextBroker.pid")
        at /root/workingDir/fiware-orion/src/app/contextBroker/contextBroker.cpp:371
    371       if (access(path, F_OK) == 0)
    Missing separate debuginfos, use: debuginfo-install boost-filesystem-1.53.0-27.el7.x86_64 boost-regex-1.53.0-27.el7.x86_64 boost-system-1.53.0-27.el7.x86_64 boost-thread-1.53.0-27.el7.x86_64 cyrus-sasl-lib-2.1.26-23.el7.x86_64 glibc-2.17-292.el7.x86_64 gmp-6.0.0-15.el7.x86_64 gnutls-3.3.29-9.el7_6.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-37.el7_7.2.x86_64 libcom_err-1.42.9-16.el7.x86_64 libcurl-7.29.0-54.el7_7.1.x86_64 libffi-3.0.13-18.el7.x86_64 libgcc-4.8.5-39.el7.x86_64 libgcrypt-1.5.3-14.el7.x86_64 libgpg-error-1.12-3.el7.x86_64 libicu-50.1.2-15.el7.x86_64 libidn-1.28-4.el7.x86_64 libselinux-2.5-14.1.el7.x86_64 libssh2-1.8.0-3.el7.x86_64 libstdc++-4.8.5-39.el7.x86_64 libtasn1-4.10-1.el7.x86_64 libuuid-2.23.2-61.el7_7.1.x86_64 nettle-2.7.1-8.el7.x86_64 nspr-4.21.0-1.el7.x86_64 nss-3.44.0-7.el7_7.x86_64 nss-softokn-freebl-3.44.0-8.el7_7.x86_64 nss-util-3.44.0-4.el7_7.x86_64 openldap-2.4.44-5.el7.x86_64 openssl-libs-1.0.2k-19.el7.x86_64 p11-kit-0.23.5-3.el7.x86_64 pcre-8.32-17.el7.x86_64 zlib-1.2.7-18.el7.x86_64
    
    (gdb) list
    366     *
    367     * fileExists -
    368     */
    369     static bool fileExists(char* path)
    370     {
    371       if (access(path, F_OK) == 0)
    372       {
    373         return true;
    374       }
    375
    
    (gdb) n
    376       return false;
    (gdb) n
    377     }
    (gdb) n
    pidFile (justCheck=true) at /root/workingDir/fiware-orion/src/app/contextBroker/contextBroker.cpp:397
    397       if (justCheck == true)
    (gdb) print justCheck
    $1 = true
    (gdb) list
    876         {
    877           LM_X(1, ("Fatal Error (when option '-https' is used, option '-cert' is mandatory)"));
    878         }
    879       }
    880
    881       notificationModeParse(notificationMode, &notificationQueueSize, &notificationThreadNum); // This should be called before contextBrokerInit()
    882       LM_T(LmtNotifier, ("notification mode: '%s', queue size: %d, num threads %d", notificationMode, notificationQueueSize, notificationThreadNum));
    883       LM_I(("Orion Context Broker is running"));
    884
    885       if (fg == false)
    (gdb) n
    882       LM_T(LmtNotifier, ("notification mode: '%s', queue size: %d, num threads %d", notificationMode, notificationQueueSize, notificationThreadNum));
    (gdb) step
    883       LM_I(("Orion Context Broker is running"));
    (gdb)
    

Пока я использую команду skip (то есть 's'), чтобы войти в функцию, но она перемещается на следующую строку. Я не знаю, где я делаю ошибки.

На самом деле я хотел отладить файлы, присутствующие в папках https://github.com/telefonicaid/fiware-orion/blob/master/src/lib/, но я не могу туда добраться. Даже я не могу выйти из fiware-orion/src/app/contextBroker/contextBroker.cpp класса.

Может кто-нибудь предложить мне правильные команды для отладки Fiware-Orion, или скажите, где я делаю ошибки, пожалуйста.

Есть ли какая-либо документация, относящаяся к отладке Fiware-Orion?

Ответы [ 3 ]

1 голос
/ 17 марта 2020

Если вы просто хотите повысить уровень отладки самого Orion, аргументы командной строки просто:

orion -logLevel DEBUG -t 0-255 -noCache -logForHumans

Например, при использовании Dockerized Orion можно использовать следующее docker-compose:

  orion:
    image: fiware/orion:${ORION_VERSION}
    hostname: orion
    container_name: fiware-orion
    depends_on:
      - mongo-db
    networks:
      - default
    expose:
      - "${ORION_PORT}"
    ports:
      - "${ORION_PORT}:${ORION_PORT}" # localhost:1026
    command: -dbhost mongo-db -logLevel DEBUG -noCache -logForHumans
    healthcheck:
      test: curl --fail -s http://orion:${ORION_PORT}/version || exit 1
1 голос
/ 21 марта 2020

В моем случае я использую QtCreator в качестве IDE (в частности, версия 3.5.1 , немного устаревшая, но она работает :). QtCreator прекрасно интегрируется с gdb, поэтому легко запустить Orion в режиме отладки, установить точки останова в графическом редакторе кода, затем стимулировать Orion запросами и посмотреть, как они работают (достигнута точка останова, et c.).

1 голос
/ 16 марта 2020

Для отладки Orion вам понадобится скомпилировать его в режиме DEBUG. Выпуск, который вы установили, не является. Чтобы получить отлаживаемый Orion, вам нужно собрать его из исходного кода и скомпилировать для отладки.

Чтобы построить Orion из исходников, ознакомьтесь с документацией здесь: https://github.com/telefonicaid/fiware-orion/blob/master/doc/manuals/admin/build_source.md.

Сборка Orion с использованием make target "di", что означает "отладочная установка".

Удачи!

...