overflow_error
がプロセスで発生しているかどうかを解析できるようにDtraceを書きたいと思っています。 実行中です。私はちょうどこれがstd::overflow_error
として投げられたエラーであることを知っています。私はDトレースを書く方法について多くのアイディアを持っていません。私は初心者ガイドが必要で、誰かが私にそれを書く方法を知らせることができるなら。私が実行しているプロセス名は、superbug_returns
です。上記のシナリオが起きているかどうかを分析するには、どのようにD-Traceを書くことができますか?私はsolarisに取り組んでいますメモリオーバーフローのDtrace?
答えて
デバッガ(dbx)でプログラムを実行するほうがはるかに簡単で、スローされた例外では停止する方が簡単でしょう。
私は、これを使ってデバッガを試してみようと思っています。通常は、C++でブレークするコマンドがあります。そのように進む方が簡単です。
DTraceを主張する場合:
数年前、Sunはa whitepaper how to use DTrace with C++を公開しました。
残念なことに例外スロー/ハンドリングがC++ランタイムにあり、内部(非占有)関数呼び出しによって行われるため、そこに記述されているテクニックを「トレース例外」に適用することは自明ではありません。
void __Crun::ex_throw(void*,const __Crun::static_type_info*,void(*)(void*))
__1cG__CrunIex_throw6Fpvpkn0AQstatic_type_info_pF1_v_v_
が呼び出される:(unmangled /マングル)関数を(異なる名前マングリング方式を使用)SunStudioコンパイルされたコードで一方GCCコンパイルされたコードでは、throw ...
は__cxa_throw(...)
となります。コンパイラのバージョンによって異なります。 SunStudioは過去のある時点で、それらのmanglingスキーム/ C++ランタイムを変更しました。しかし、どちらの場合でも、std::...
が引数として渡されるので、特定の例外クラスに対してDTraceを実行したい場合は、2次フィルタリングが必要になります(投げられた例外が本当にあなたのものかどうかを調べるDプローブ述語に興味がある)。あなたは、上記の関数[s]が何であるかを調べて、std::overflow
がスローされていることに対応し、それらをフィルタリングする必要があります。
実際のオブジェクトファイルがなければ、それ以上のアドバイスはできません。スタートのために、試してみてください。
GCC:
dtrace -n '
pid<your-process-pid>::__cxa_throw:entry
{
@exloc[ustack()] = count();
}'
SunStudio:
dtrace -n '
pid<your-process-pid>::__1cG__CrunIex_throw6Fpvpkn0AQstatic_type_info_pF1_v_v_:entry
{
@exloc[ustack()] = count();
}'
のDTraceはあなたに与えます終了し、例外がスローされているあなたのコード(Ctrlキー+ Cでの場所を見つけるために統計)。その後、そこから反復します(argsをダンプして、std::overflow
を識別できるかどうか確認し、/arg0 == .../
などをプローブに追加してフィルタリングしてください)。
- 1. メモリオーバーフロー
- 2. DTraceキーロガー
- 3. Cのメモリオーバーフローの混乱
- 4. DTraceを使用したNode.jsのプロファイリング
- 5. dtraceを使用したシステムコールのトレース
- 6. C-プログラム:リンクリストの配列を使用したハッシュテーブルのメモリオーバーフロー
- 7. メモリオーバーフローの原因となるC++のstlベクトル?
- 8. VBAランタイムエラー1004(おそらく)メモリオーバーフローのため
- 9. Tensorflowでeval()を処理するとメモリオーバーフローが発生する
- 10. dtraceのカーネル関数への引数の出力
- 11. 私のプローブをC++でDtraceで設定する
- 12. macOSでDTraceを使用したJavaアプリケーションのプロファイリング
- 13. Objective-CのDTrace出力をフィルタリングする方法は?
- 14. DtraceがNodeJSのデータを収集していません
- 15. DTraceのカーネル変数について学ぶには?
- 16. sh DTraceプロバイダを有効にするには?
- 17. モジュールdtrace-providerを見つけることができません
- 18. iPhoneで大きな画像を表示するには(メモリオーバーフローなし)?
- 19. -cフラグの使用時にDtrace出力をリダイレクトする方法は?
- 20. DTraceからOS Xアプリを隠すことはできますか?
- 21. DTraceが無効アドレスエラーを発生させる理由は何ですか?
- 22. Tfidf行列と予測ベクトルの類似度を計算するとメモリオーバーフローが発生する
- 23. dtraceにどのプローブが有効になっているか尋ねることができますか?
- 24. SmartOSでHotSpot DTraceプローブを使用するにはどうすればよいですか?マックOS X上で
- 25. DTraceを使用してstrncpyに渡された引数を表示できますか?
- 26. DTraceにustack()を持つJavaフレームがありません。 Joyent SmartOSインフラストラクチャコンテナで実行する
- 27. iosnoop、iotopの、opensnoop、execsnoop、opensnoop、dtrussおよびその他のDTraceベースのコマンドは、OSXエルキャピタンでは動作しません、MacOSのシエラ
- 28. このDTraceスクリプトを実行してアプリケーションのプロファイルを作成するにはどうすればよいですか?
- 29. Mac OS X上で動的に生成されたコードのDTraceに通知することはできますか?
- 30. DTraceは利用できないため、InstrumentsはどのようにしてiOSからデータを収集しますか?