タグ

2020年11月26日のブックマーク (2件)

  • [Linux][C/C++] backtrace取得方法まとめ - Qiita

    __builtin_return_address() を使用する __builtin_return_address() を利用することで、callerのアドレスを取得できる。 引数の数値を増やすことで、更に上の呼び出し元を参照できる。 #include <stdio.h> #define __USE_GNU #include <dlfcn.h> void hoge() { Dl_info info; dladdr(__builtin_return_address(0), &info); fprintf(stderr, "%s : __builtin_return_address => %p\n", __func__, __builtin_return_address(0)); fprintf(stderr, "%s : Dl_info.dli_fname => %s\n", __func_

    [Linux][C/C++] backtrace取得方法まとめ - Qiita
  • gccの-rdynamic option 調査メモ - Qiita

    はじめに gccの-rdynamic optionの調査メモ。 gcc 9.1.0, glibc 2.29を対象に調査した。 基内容に差はないと思うが、target archはx86_64-pc-linux-gnu。 TL;DR -rdynamicオプションはリンク時のみ効果がある。 -rdynamicオプションを適用すると、共有ライブラリから実行ファイルのシンボル情報を動的に取得できるので、バックトレースの表示などに使われる。 -rdynamicオプションを適用することで、共有ライブラリとして利用可能な実行ファイルを作成できる。 -rdynamicオプションを適用するとシンボルバッティングや意図せず共有ライブラリに制御されてしまうリスクが増えるので、明確に目的がないなら通常は無効にしておく。 gcc,glibcのソースコードは面白い。 gccのspecファイルむずい。 公式ドキュメント

    gccの-rdynamic option 調査メモ - Qiita