Как напечатать имя исходного файла с помощью функции dladdr()?

Я пытался распечатать обратную трассировку, используяdladdr().info.dli_fnameв следующем фрагменте кода отображается имя файла ELF. Подскажите, пожалуйста, можно ли разрешить и напечатать имя исходного файла и номер строки программно без помощиaddr2lineилиgdb?

Код:

      void print_caller(void)
{
    int       rc = -1;
    Dl_info info = {0};
    void *pc =  __builtin_return_address(0);

    rc = dladdr(pc, &info);

    printf(" ==> %p: %s (in %s)\n", pc, info.dli_sname, info.dli_fname);
}

Выход:

      $ ./a.out 
 ==> 0x55a6b04a1589: foo2 (in ./a.out)

0 ответов

Другие вопросы по тегам