問題タブ [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.

0 投票する
2 に答える
1630 参照

rspec - RSpec 2 でテスト失敗のバックトレースを短縮するにはどうすればよいですか?

Spec でエラーが発生すると、次のようなメッセージが表示されます。

Ruby 1.0.2、rails (3.0.3)、および rspec (2.3.0) を実行しています。M .rspec 構成ファイルには、次の 2 つのオプションのみが指定されています。

--drb --色

拡張トレースをオフにするにはどうすればよいですか?

0 投票する
2 に答える
8844 参照

java - java: 現在のバックトレースを出力する

現在のバックトレースを追加するコマンドを Java に追加する方法はありますか?

red5 アプリケーションを作成していますが、appDisconnect 関数が 2 回呼び出されています。ユーザーが部屋を変更するたびに。現在のバックトレースを表示する appDisconnect 関数の先頭に関数を追加したいので、それを呼び出したものを確認できます。

ありがとう

0 投票する
2 に答える
1965 参照

ruby - Ruby インタープリターがセグメンテーション違反を起こした後、コアファイルから Ruby バックトレースを取得できますか?

注: libxml-ruby gem を使用して質問を説明しているときに発生した segfault を使用していますが、その後、この gem の問題を修正しました。この質問の本当の意味は、インタープリター自体がセグメンテーション違反に遭遇したコアファイルを使用して gdb から Ruby バックトレース (つまり、Ruby コードが例外の処理に失敗したときにインタープリターが出力するものと同じもの) を表示することです。

XML ドキュメントの生成中に奇妙な segfault が発生します。

更新 1:この segfaults は、vanilla Ruby (MRI) でも同様です。

コアファイルを有効にして、gdb のバックトレースを調べました (質問の最後を参照)。インタープリターがクラッシュする場所を確認できます。これについてグーグルで検索すると、多くの有望な結果が得られます。私が見たいのは、インタープリターのバックトレースに加えて、Ruby コード自体のバックトレース (つまり、インタープリターの観点からのバックトレース) です。

コアを gdb にロードすることで、解釈されたコードのスタックを出力するインタープリター関数を呼び出せるようになることを願っています。

何か案は?

興味のある方のために、コアとバックトレースを次に示します。

0 投票する
2 に答える
9177 参照

c - gdb 奇妙なバックトレース

私のプログラムは、dietlibc で静的にコンパイルされています。ubuntu x64 (-m32 フラグを使用して x86 用にコンパイル) でコンパイルされ、centos x86 で実行されます。

コンパイルされたサイズはわずか約 100KB です。-ggdb3 でコンパイルし、最適化フラグはありません。

私のプログラムは、signal.h を使用して SIGSEGV シグナルを処理してから、abort() を呼び出します。

プログラムは数日間問題なく動作しますが、セグメンテーション違反が発生することがあります。これは、私が理解できない奇妙なバックトレースを取得したときです。

0 投票する
6 に答える
1052 参照

c++ - C ++プログラムは、gccでのSIGSEGV中に関数呼び出しまたはprintfを処理しません。

スタックトレース出力をstderrに取得したり、ログファイルにダンプしたりする際に問題が発生します。Kubuntu10.04でgccコンパイラ(4.4.3)を使用してコードを実行しています。問題は、通常の実行モード(gdbなし)では、プログラムが「セグメンテーション違反」以外は何も出力しないことです。以下のprintステートメントのようにバックトレース出力を出力したいと思います。アプリケーションでgdbを実行すると、printf / fprintf /(関数呼び出し)ステートメントが表示され、次のステートメントでクラッシュします。

奇妙なことに、同じファイル内でクラッシュする関数を呼び出すと機能し、正常に機能し、出力を適切に出力します。ただし、このファイルの外部の関数でプログラムがクラッシュした場合、出力は出力されません。したがって、printfまたはファイルダンプステートメントまたは関数呼び出しは処理されません。次のサンプルコードを使用しています。

助けてくれてありがとう。

0 投票する
3 に答える
29160 参照

c - Win32-Cコードからのバックトレース

私は現在、Cコード(C ++なし)からWindowsでバックトレース情報を取得する方法を探しています。

参照カウントメモリ管理を備えたクロスプラットフォームのCライブラリを構築しています。また、メモリの間違いに関する情報を提供する統合メモリデバッガもあります(XEOS C Foundation Library)。

障害が発生すると、デバッガが起動され、障害に関する情報と関連するメモリレコードが提供されます。

ここに画像の説明を入力してください

LinuxまたはMacOSXでは、この機能execinfo.hを使用するためにbacktrace検索できるので、メモリ障害に関する追加情報を表示できます。

私はWindowsで同じことを探しています。

Cでスタックトレースを取得するにはどうすればよいですか?StackOverflowで。サードパーティのライブラリを使用したくないので、CaptureStackBackTraceまたはStackWalk関数は見栄えがします。

唯一の問題は、Microsoftのドキュメントを使用しても、それらの使用方法がわからないことです。

私は通常POSIX準拠のシステムで作業しているため、Windowsプログラミングには慣れていません。

それらの関数の説明と、おそらくいくつかの例は何ですか?

編集

オーバーヘッドが少し少ないようですが、CaptureStackBackTraceから関数を使用することを検討しています...DbgHelp.lib

これが私がこれまでに試したことです:

がらくたになっています。以外のものを使うべきだと思いますSymFromAddr

0 投票する
6 に答える
15498 参照

c - Windows 上の StackWalk64 - シンボル名を取得する

では、SO に関する 1 日で 2 番目の質問です。Windows プログラミングが私を幸せにしているようです... : S

現在、Win32 実行可能ファイルの関数呼び出しスタックを取得しようとしています。

今朝、私はこれについても質問しました:

Win32 - C コードからのバックトレース

StackWalk64さて、関数がこれの鍵であると確信しています。使用方法に関するいくつかの記事と、MS のドキュメントを読みました。

それは実際に私のテストプログラムにフレームを表示するので、ちょっとうまくいきます...

問題は、スタック情報からシンボル名を取得できないことです。

私はSymGetSymFromAddr64これに関数を使用していますUnDecorateSymbolName。でもジャンクキャラしか出てこない。

これが私のコードです。私はWindowsプログラミングに慣れていないので、面倒ではないことを願っています:

実際の出力は次のとおりです。

ちなみに、スタックアドレスが常に0であることは奇妙に思えます...助けていただければ幸いです:)

みんなありがとう!

編集

サードパーティのライブラリを使用せずに、単純な C ソリューションを探しています...

0 投票する
4 に答える
37546 参照

c - カーネルモジュールコードにCバックトレースを含める方法は?

そのため、どのカーネル プロセスがブロック ドライバーでいくつかの関数を呼び出しているかを調べようとしています。C ライブラリに backtrace() を含めると簡単になると思いました。しかし、バックトレースの読み込みに問題があります。

このサンプル関数をコピーして、バックトレースを表示しました。

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/063/6391/6391l1.html

コンパイルしようとすると、どこかでファイルが見つからないか、関数が定義されていないというエラーが発生します。

これが最も近いものです。

Makefile では、コンパイラ ディレクティブを次のように記述します。

2 番目の -I/usr/include を省略した場合、コンパイラは、必要なヘッダー execinfo.h が見つからないと報告します。

次に、バックトレースを実行するコードで、例から関数をコピーしました。

エラーの最初の兆候が発生するブロックドライバー関数で、後でこの関数の呼び出しを行いました。単に:

したがって、コンパイルすると、次のエラーが発生します。

注: block26.c は、バックトレースを取得したいファイルです。

backtrace と backtrace_symbols が .ko モジュールにコンパイルされたときに未定義のままになる明白な理由はありますか?

コンピューターに常駐し、モジュールにロードされていないコンパイラー・インクルード execinfo.h を使用しているため、推測しています。

控えめに言っても、私の無知な推測です。

バックトレース関数をモジュールにロードするのを手伝ってくれる人はいますか?

このお問い合わせをご覧いただきありがとうございます。

私はデビアンに取り組んでいます。関数などを取り出すと、モジュールは正常にコンパイルされ、ほぼ完全に動作します。

ndasusers から

0 投票する
0 に答える
274 参照

android - Eclipse での dalvikvm (Android) からの debuginfo の解析

SQLite を使用する Eclipse で小さな Android アプリを作成しています。それは非常にうまく機能します。好奇心からLogcatをブラウジングしていくつかのメッセージを探したところ、これらの繰り返しが見つかりました:

グーグルで調べてみると、エラーの原因はcursor.close(). ただし、将来の参考のために、DDMS/Logcat にこのエラーの原因教えてもらうにはどうすればよいですか? この時点で、それがどれであるかはわかります (すべてのソース コードを手動で検索しました) が、コードが大きくなるにつれて、データを抽出できる方向に DDMS が指し示してくれるとよいでしょう。今のところ、デバッグ情報ウィンドウにダンプされるものはすべて私には理解できません。