[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

BoostとStackTraceに関するbabydaemonsのブックマーク (2)

  • 実践C++応用講座 第29回 マルチプラットフォームなスタック・トレースその2 | Theolizer®

    こんにちは。田原です。 前回はboostライブラリに含まれるスタック・トレース機能の基的な使い方を解説しました。前回の使い方は通常のコンテキストで使用できます。しかし、スタック・トレースはもっとクリティカルなコンテキストでも使いたいです。特に「ぬるぽ」などの不正メモリ・アクセスが発生した時がその筆頭と思います。これはSIGSEGV等のシグナルで捕まえることができますが、このシグナル・ハンドラーのコンテキストはかなり特殊でできないことが盛りだくさんです。その中でのスタック・トレースのとり方について解説します。 1.まずはboostのドキュメントから Handle terminates, aborts and Segmentation Faultsにシグナル発生時のスタック・トレースのとり方が解説されています。 ポイントは、シグナルは非同期に発生する「割り込み」処理なのでスタック・トレースの

    実践C++応用講座 第29回 マルチプラットフォームなスタック・トレースその2 | Theolizer®
  • 実践C++応用講座 第28回 マルチプラットフォームなスタック・トレース | Theolizer®

    (実際にはこの前後にもう少し履歴がありますし、ビルド・モードによって内容が異なります。詳しくは後述します。) さて、上記プログラムのbar()関数でスタック・トレースを出力することを知っているので意味付けできますが、どこでスタック・トレースを出力したのか知らない時(普通はこちらです)、単なるアドレスのリストを見ても何が何やら分からないですね。 そこで、コード内のアドレスとソースの位置を対応付けるためのデバッグ用シンボルを利用して、上記アドレスをソースへ対応付けることができます。例えば、次のような出力を得られます。 1# bar at c:\cpp-school2\12.stack_trace\stack_trace.cpp:36 2# foo at c:\cpp-school2\12.stack_trace\stack_trace.cpp:42 3# main at c:\cpp-scho

    実践C++応用講座 第28回 マルチプラットフォームなスタック・トレース | Theolizer®
  • 1