Как напечатать имя исходного файла с помощью функции 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)