問題タブ [debug-symbols]
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.
c - Makefile for Cでデバッグシンボルを生成する方法は?[Linux]
GDBとKDEvelopを使用して、KnoppixVMでコンソールアプリをデバッグしようとしています。KDevelopとGDBはブレークポイントで壊れません。デバッグシンボルがないからだと思います。
私が正しければ、それらを作成するためにMakefileをどのように変更する必要がありますか。多分問題はどこかにありますか?
よろしく、アリエル
c - ライブラリが -g でコンパイルされたかどうかを確認するにはどうすればよいですか?
x86 Linux でコンパイルしたライブラリがいくつかあり、それらがデバッグ シンボルを使用してコンパイルされているかどうかをすばやく判断したいと考えています。
windbg - WinDbg、読み込まれたモジュールのシンボル サーバー パスを表示します (シンボルが読み込まれなかった場合でも)?
DbgEng API を使用せずに WinDbg から、読み込まれたすべてのモジュールのシンボル サーバー パス (つまり、 PdbSig70 および PdbAge ) を表示する方法はありますか?
そんなこと知ってる
シンボルがロードされたモジュールに対してこれを行います。問題を診断するために、ロードされなかったシンボルのこれらのパスを知りたいです。DbgEng API を利用しなくてもこれが可能かどうかは誰にもわかりませんか?
編集:
私はまた、あなたが使用できることを理解しています
シンボルの読み込みに関するエラー メッセージを表示します。これには役立つ出力がありますが、必要な他の出力とインターリーブされており、「lml」のように単純で明確ではありません
visual-studio-2008 - WINDOWS デバッグ シンボルの読み込みに問題があります。Visual Studio で WINDOWS オペレーティング システムのバイナリ .pdb を読み込めませんでした
私はソフトウェア会社でシステム ソフトウェア製品の仕事をしています。一昨日、その製品がクラッシュし、コアが表示されました。
正確な問題を見つけるために、関数名(kernel32.dll、ntdll.dll ..関数名が表示されない)を含む完全なコアスタックを知りたいです。Microsoft サイトから WINDOWS デバッグ シンボルをダウンロードしました。 http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx#f
以下の 3 つのパッケージをダウンロードします。 NRL-ENU-DEBUG.exe。
WINDOWS OS バイナリのデバッグ シンボルを読み込もうとしましたが、成功しませんでした。例:ntdll.dllの場合、対応するntdll.pdbを読み込もうとしましたが、Visual Studioスルーエラー、つまり「シンボルファイルntdll.pdbがモジュールと一致しません」
オペレーティング システム: WINDOWS 2003 SP2 を使用しています。
関数名で完全なスタックを取得するのを手伝ってください。
システム ソフトウェアでクラッシュした後のコア スタック。
kernel32.dll!77e4bef7() Asm [以下のフレームは正しくないか、見つからない可能性があります。kernel32.dll のシンボルがロードされていません] Asm kernel32.dll!77e4bef7() Asm kernel32.dll!77e46cfd() Asm ntdll.dll!7c827d29( ) Asm ntdll.dll!7c83d266() Asm ntdll.dll!7c83d2b1() Asm ntdll.dll!7c82d308() Asm ntdll.dll!7c82d30f() Asm ntdll.dll!7c82f380() Asm ntdll.dll!7c82d30f() Asm ntdll.dll!7c82f557() Asm ntdll.dll!7c82a501() Asm ntdll.dll!7c82daee() Asm ntdll.dll!7c82f51a() Asm ntdll.dll!7c82f2c3() Asm kernel32.dll!77e6518d() Asm ntdll. dll!7c829cc2() Asm ntdll.dll!7c829de7() Asm ntdll.dll!7c829e02() Asm ntdll.dll!7c827899() Asm ntdll.dll!7c82ec4a() Asm msvcr80.dll!781787e4() Asm msvcr80.dll! 78178823() Asm sal.dll!SAL_DebugOutput(const char * fmtstr=0x66009318, ...) 行 643 C++ sal.dll!MapSystemError(unsigned long dwerr=0x00000040) 130 行目 + 0xb バイト C++
sal.dll!MapLastError() 行 146 + 0xc バイト C++
sal.dll は私のソフトウェア バイナリであり、sal.dll のデバッグ シンボルを読み込むことができました。
あなたの提案を待っています。
c# - スタックトレースにビルドマシンのファイルパスを表示しない
私は現在、独自のロギングを備えたC#アプリケーションを開発しています。例外がスローされると、例外はリストに保存され、ユーザーはリストビューを介して表示できます。ユーザーがリストビューで例外をクリックすると、例外のスタックトレースがテキストボックスに表示されます。ただし、リモートマシンでプログラムを実行している場合でも、スタックトレースには、アプリケーションがコンパイルされたマシンから元のソースファイルへのファイルパスが表示されます。
例えば:
フォルダなしでソースファイルを表示するだけでいいでしょう...
この動作を変更するにはどうすればよいですか?
ネイティブソリューションはありますか?それとも、単に文字列操作を行う必要がありますか?
windows - Symbol Server に正確なバージョンの Windows DLL がなくても、死後クラッシュ ダンプのデバッグが可能
アプリケーション内で、MiniDumpWriteDump 関数 (dbghelp.dll を参照) を使用して、アプリケーションがクラッシュするたびにクラッシュ ダンプ ファイルを書き込みます。
また、シンボル サーバーを使用してすべての実行可能ファイルと pdb ファイルを保存しているため、顧客がクラッシュ ダンプ ファイルを送信するたびに、デバッガーが正しいバージョンの実行可能ファイルとデバッグ情報を自動的に取得します。
また、Windows DLL (ntdll.dll、kernel32.dll など) とそのデバッグ情報をシンボル サーバーに保存します (SymChk を使用)。デバッグ情報は、Microsoft のパブリック シンボル サーバーから取得されます。
次の場合を除いて、ほとんどの場合、これは完璧に機能します。
- お客様が Windows DLL の 1 つでクラッシュしました。
- 顧客は、私がシンボル サーバーに入れていない DLL を使用しています。
これは、すべての Windows DLL のすべてのフレーバーをシンボル サーバーに格納するのは非常にやり直しがきかないためです (特に週次パッチを使用する場合)。
そのため、顧客が NTDLL.DLL のバージョン 5.2.123.456 でクラッシュした場合、私はこの正確なバージョンの DLL をシンボル サーバーに配置していませんでした。Microsoft のパブリック シンボル サーバーでさえ、DLL 自体ではなく、デバッグ情報のみを提供するため、役に立ちません。
私の現在の解決策は、顧客に DLL を尋ねることですが、それは必ずしも簡単ではありません。したがって、私はより良い解決策を探しています。
正確なバージョンの DLL がなくても、デバッガーに正しいコール スタックを表示させたり、特定の DLL のデバッグ情報をロードさせたりする方法はありますか?
または、すべての (または重要な) Windows DLL のすべてのバージョンを (Microsoft から) 入手する方法はありますか?
編集:
その間、私はこの問題を解決する本当に簡単な方法を見つけました。ユーティリティ ModuleRescue ( http://www.debuginfo.com/tools/modulerescue.htmlを参照) を使用すると、ミニダンプ ファイルからダミーの DLL を生成できます。これらのダミー DLL を使用すると、デバッガーは満足し、Microsoft サーバーからデバッグ シンボルのロードを正しく開始します。
java - Java jar シンボル情報: tdstrip に相当するものは何ですか?
1MB の .jar ファイルがあります。デバッグ情報がなければ、約 100KB になるはずです。では、デバッグ情報を削除するにはどうすればよいですか?
borland の世界の古い人はtdstrip
、.exe からシンボル情報を削除するというツールを覚えているかもしれません。
Javaの世界で同等のものは何ですか? 1MB のファイルが大きすぎるモバイル開発をしようとしています。
デバッグ情報なしで .jar ファイルを再コンパイルして再構築できることはわかっていますが、ソースなどがない場合、どうやってそれを行うのですか?
linux-device-driver - Linux System.map に関数名とアドレスがありません
AT91SAM9263 ボードで組み込み開発を行っていますが、奇妙な問題に遭遇しました。Debian Linux カーネル 2.6.18.4 を実行しており、arm-linux-gcc 3.4.6 でクロスコンパイルされ、C ライブラリに uClibc-0.9.28 を使用しています。カーネル デバイス ドライバーをデバッグしていますが、特定の関数が System.map ファイルに表示されません。当然のことながら、ブレークポイントを設定することはできません。奇妙なことに、その呼び出し関数に割り込むと、ステップインできません。gdb の nexti コマンドを使用すると、関数は実行されますが、ソースはスキップされます。関数は atmel_rx_chars(struct uart_port *port) です。これは atmel_serial.c で宣言された static void 関数であり、その例は [1] に示されています。同じファイル (atmel_tx_chars(struct uart_port *port)、たとえば) これらは同じファイルで宣言され、実際には System.map ファイルでインデックス化されています。[2] によると、「System.map は 'nm vmlinux' によって生成され、無関係または興味のないシンボルは grep で抽出されます。」nm (および objdump) を使用してすべてのシンボルを表示しようとしましたが、それでも出力に表示されません。ただし、atmel_rx_chars vmlinux を grep すると、一致が返されます。私は自分自身を少しパワーユーザーだと思っていましたが、その後は本当に困惑しています. どんなアドバイスでも大歓迎です。私は自分自身を少しパワーユーザーだと思っていましたが、その後は本当に困惑しています. どんなアドバイスでも大歓迎です。私は自分自身を少しパワーユーザーだと思っていましたが、その後は本当に困惑しています. どんなアドバイスでも大歓迎です。
ありがとうございました、
ジェイス
[1] http://lxr.free-electrons.com/source/drivers/serial/atmel_serial.c#L379
[2]http://www.faqs.org/docs/Linux-HOWTO/Kernel-HOWTO.html#systemmap
deployment - デプロイ時に出荷されるデバッグシンボル
なぜソフトウェアは関連するデバッグシンボルとともに展開されるのだろうか。長所と短所は何ですか?問題(情報セキュリティ関連の問題)を明らかにするコードはありますか?
c - gccが非デバッグビルドにシンボルを追加するのはなぜですか?
gccを使用してリリースビルドを実行すると(つまり、指定しません-g
)、バイナリにシンボルが含まれるようになりstrip
、それらを削除するために使用する必要があります。実際、関数にブレークポイントを設定し、gdbでバックトレースを取得できます(行番号はありませんが)。
これは私を驚かせました-なぜこれが起こるのか誰かが説明できますか?
例えば
gcc -o foo foo.c
nm foo | grep blah
:
08048374 t blah