c ++ Stacktrace на nvidia-jetson-nano arm64 - PullRequest
       32

c ++ Stacktrace на nvidia-jetson-nano arm64

0 голосов
/ 30 октября 2019

Итак, мы пытаемся использовать backward-cpp для печати стековых трасс в нашем приложении c ++. В частности, мы используем обработчик сигнала для перехвата ошибок и их печати. Примечание : Использование llibdw для подробных стеков

Прекрасно работает на x86_64, но не может напечатать полную трассировку стека на arm64 nvidia-jetson-nano.

Запуск примера bracktrace_test на x86_64:

$ g++ --version
g++ (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ uname --operating-system  --kernel-name --kernel-release --hardware-platform --processor
Linux 4.15.0-65-generic x86_64 x86_64 GNU/Linux

$ g++ -g -rdynamic backward.hpp backtrace_test.cpp -o backtrace_test -ldw
$ ./backtrace_test

x86_64 stacktrace 2

Запуск такого же примера bracktrace_test на nano arm64:

$ g++ --version
g++ (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ uname --operating-system  --kernel-name --kernel-release --hardware-platform --processor
Linux 4.9.140-tegra aarch64 aarch64 GNU/Linux

$  g++ -g -rdynamic -funwind-tables -fasynchronous-unwind-tables backward.hpp backtrace_test.cpp  -o backtrace_test -ldw

$ ./backtrace_test

aarch64 stacktrace

Код для теста обратной трассировки:

#define BACKWARD_HAS_DW 1

#include <execinfo.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdexcept>

#include "backward.hpp"
backward::SignalHandling sh;


void myfunc(int ncalls)
{

   throw std::invalid_argument( "sample invalid exception");
}

int main(int argc, char *argv[])
{
   myfunc();
   exit(EXIT_SUCCESS);
}

Отслеживание проблемы: проблема

...