問題タブ [backtrace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - Linux(MIPS):コアダンプを表示するときにレジスタの内容を一時的に「変更」する
私のアプリのスレッドのいくつかは最適化された関数にあり、アプリをデバッグすると、gdbはそれらの関数からバックトレースできません。しかし、私はアセンブラーを見てきましたが、次のようなことを行うことで、前の関数のフレームまで手作業でスタックを部分的に巻き戻すことができます。
これは、ライブデバッグを行っている場合は完全に機能し、完全なバックトレースを正常に表示します。コアダンプを見るときに、同じことをオフラインで実行できるようにしたいと思います。明らかに、レジスタを突くという概念はコアダンプでは無意味ですが、同様のバックトレースを実行できるように、gdbに「レジスタにこの値を使用する」ように指示する方法はありますか?
ruby-on-rails - 残りのスタックトレースはどこにありますか?
エラーが発生しているテストがあります。問題を追跡するために、NodeAffiliationというモデルにこのメソッドを追加することになりました。
そして、私はこのエラーを受け取ります:
しかし、audit_test.rbはこれを行っています:
どういうわけか、フォームを作成するとNodeAffiliationも作成されますが、これらの手順はバックトレースに含まれていないようです。なぜ、および/またはそれらを取得する方法についてのアイデアはありますか?
c++ - C++で完全なバックトレースを印刷する
LinuxのC++プログラムから、gdbで実行されるのと同様の形式でバックトレースをダンプしたいと思います。この目的のために、backtrace()関数とbacktrace_symbols()関数を使用しようとしました。これらは関数名とオフセットを返しました。__cxa_demangle()関数を使用して、読み取り可能な関数名を取得できます。
gdbによって行われるように、ファイル/行の位置も取得する方法はありますか?
ruby - バックトレースから受信者情報を取得する
エラー backtrace から、$!.backtrace
各ステップのメソッド名を抽出できます。各メソッド呼び出しの受信者をさらに抽出したい。この機能を持つこの宝石を見たので、これを行う方法があると確信しています。
上記のgemは を使用しているようでKernel.set_trace_func
、情報を記録していbinding
ます。ただし、すべてのメソッド呼び出しに対してこれを行うと、プログラムの実行が大幅に遅くなります。binding
エラーにつながるコール スタックに関連する情報を選択的に記録するにはどうすればよいですか?
d - Dバックトレースで行番号を表示するには?
D には次のサンプル コードがあります。
このコードを DMD でコンパイルしました (OS X で v2.056 を使用)。実行すると、明らかにクラッシュします。
場所の代わりにバックトレースで行番号を取得する方法はありますか? クラッシュの行番号 ( の ) を確認できます5
がcore.exception.RangeError@test(5)
、それはバックトレースの先頭のみです。f()
との中の行番号を取得できますmain()
か?
c++ - C++ でバックトレース行番号エラーを修正する方法
プログラムのキャッチ例外に関する情報を追跡したいときに問題が発生しました。
以下の関数を使用しました。
出力は次のようになります。
すべての情報 (名前空間、クラス名、およびメソッド名) は適切です。しかし、唯一の問題は、行番号が間違っていることです。
バックトレースの行番号を修正するにはどうすればよいですか?
php - PHPのバックトレースをエラーログに保存するにはどうすればよいですか?
私は今これを使用しています:
しかし、私は毎回それを逆シリアル化する必要があります。バックトレースを保存するためのより良い方法はありますか?
ruby-on-rails - RSpec でバックトレースが表示されない
rspec でバックトレースを取得しようとしていますが、何らかの理由で機能しません。
これはテストファイルです:
これは私が実行するコマンドです:
そして、これは私が得るものです:
私の.rspec:
そして、spec_helper.rb の私の RSpec 部分:
「backtrace_clean_patterns」の有無にかかわらず試してみました。
ここで何が問題なのか知っている人はいますか?
php - PHP json_encode でリソース タイプを指定して debug_backtrace()
現在、バックトレースとともにエラーをログに記録するロガーがあります。ロガーは を介してバックトレースを JSON にシリアル化しますjson_encode()
。
いくつかの仮想コードを見てみましょう...
上記のコードを実行すると、次のように表示されます。
警告: json_encode() [function.json-encode]:タイプはサポートされていません。5 行目の /code/ch6gVw で null としてエンコードされています [{"file":"/code/ch6gVw","line":8,"function" :"テスト","引数":[null]}]
ここで、次の 2 つのことが起こっていることがわかります。
- ロガー自体が警告を発しています! 悪い悪い悪い!
- ログに記録されたデータから、関数に null を渡したことがわかります?!?!
したがって、私の提案する解決策は次のようなものです。
結果は次のようになりますResource id #1 (gd)
ただし、これは重大な問題を引き起こす可能性があります。
- 配列が自分自身を参照する無限ループに陥らないように、どの配列をループしたかを何らかの方法で追跡する必要があります (
$GLOBALS
この混乱を引き起こす傾向があります)。 - オブジェクト プロパティのリソースも変換する必要がありますが、オブジェクトは配列とは異なり、元のもののコピーではないため、プロパティを変更するとライブ オブジェクトが変更されます。一方、
clone()
対象物に対してどれくらい安全ですか? - このようなループはサーバーの速度を著しく低下させませんか (バックトレースは大きくなる傾向があります)。
c++ - リンカーメソッド名を「復号化」する方法は?
バックトレースを使用してアプリケーションのスタック トレースを出力していますが、次のような結果が得られます
「リンカー名」を「ソース名」に変換し、オフセットからコード行番号を取得する方法はありますか?
次のようなバックトレースが必要です。
アップデート。
コンパイラの仕様により、この手法が機能する場合と機能しない場合、または機能しない場合があることを理解しています。少なくとも gcc とビジュアル C++ でリンカー シンボルを「デマングル」したい。