タグ付けされた質問 「debug-symbols」

8
#if DEBUG vs. Conditional( "DEBUG")
大規模なプロジェクトでは、どちらを使用するのが適切で、その理由は次のとおりです。 #if DEBUG public void SetPrivateValue(int value) { ... } #endif または [System.Diagnostics.Conditional("DEBUG")] public void SetPrivateValue(int value) { ... }


16
Visual Studio読み込みシンボル
私はしばらくの間、ColdFusionプロジェクトに取り組んでおり、少なくともVisual Studioの動作がおかしくなり始めました。 デバッグを開始すると、プロジェクトがビルドされ、デプロイが開始され、デプロイが完了し、プロジェクトのシンボルのロードを開始していることがわかりました。 しかし、それは非常に遅く、なぜこのステップを始めたのかはわかりません。私は何をしたでしょうか? このシンボルの読み込み手順は必要ですか?どうすれば無効にできますか? [ツール]-> [オプション]-> [デバッグ]-> [シンボル]ダイアログには、シンボルファイル(.pdb)の場所が追加されていません。また、プロジェクトのデバッグディレクトリの下のフィールドをポイントし、[シンボルが...の場合にのみ上記のディレクトリを検索する]チェックボックスをオンにしました。シンボルの読み込みをオフにするには、このダイアログをどのように設定すればよいですか? ロードされているシンボルを[モジュール]ウィンドウで確認しましたが、何も表示されません。何が問題ですか?

9
Xcode 4.2デバッグはスタック呼び出しを象徴していません
iOS 5シミュレーター/デバイスでのXcode 4.2デバッグに問題があります。予想通り、次のコードがクラッシュします。 NSArray *arr=[NSArray array]; [arr objectAtIndex:100]; iOS 4では、16進数の有用なスタックトレースが表示されます。しかし、iOS 5では、次のようになります。 *** First throw call stack: (0x16b4052 0x1845d0a 0x16a0674 0x294c 0x6f89d6 0x6f98a6 0x708743 0x7091f8 0x7fcaa9 0x2257fa9 0x16881c5 0x15ed022 0x15eb90a 0x15eadb4 0x15eaccb 0x6f02a7 0x6faa93 0x2889 0x2805) ありがとう。
140 ios  xcode  debug-symbols 

4
「フル」または「pdbのみ」のデバッグ情報を使用してリリースビルドをコンパイルする必要がありますか?
Visual Studio 2010 for C#プロジェクトで、[プロジェクトのプロパティ]> [ビルド]> [詳細]> [デバッグ情報]の順に移動すると、なし、完全、またはpdbのみの3つのオプションがあります。この質問への回答に基づいて、フルとpdbのみの違いのいくつかを理解していると思います。しかし、どちらがリリースビルドに適していますか?「完全」を使用すると、パフォーマンスに影響がありますか?「pdb-only」を使用すると、本番環境の問題のデバッグが難しくなりますか? 「フル」と「pdbonly」の違いは何ですか?https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/debug-compiler-option

2
Delphiプログラムまたはコンパイラが生成したデバッグ情報からローカル変数情報(アドレスとタイプ)をどのように抽出しますか?
私の目標は: Delphiでコンパイルされた32ビットまたは64ビットのWindowsプログラムで中断されたスレッドを指定して、スタックをウォークする(実行可能) スタックエントリを指定して、各メソッドのローカル変数とその値を列挙します。つまり、少なくとも、それらのアドレスとタイプ(integer32 / 64 / signed / unsigned、string、float、record、class ...)を見つけ、それらの組み合わせを使用して値を見つけることができます。 1つ目は問題ありませんが、この質問に関する2つ目です。高レベルで、Delphiのスタックエントリを指定してローカル変数をどのように列挙しますか? 低レベルでは、これは私が調査してきたものです: RTTI:メソッドに関するこの種の情報はリストしません。これは、私が実際に現実的な選択肢であると思ったものではありませんでしたが、とにかくここにリストします。 デバッグ情報:デバッグビルド用に生成されたデバッグ情報をロードします。 マップファイル:詳細なマップファイル(テキスト形式のファイルです。ファイルを開いて確認してください)にも、ローカル変数情報は含まれていません。基本的には、アドレスとソースファイルの行番号のリストです。アドレスとファイルの行の関連付けに最適です。たとえば、樋の青いドットです。より詳細な情報には不向き リモートデバッグ情報(RSMファイル)- その内容や形式に関する既知の情報はありません。 TD32 / TDSファイル:現在の研究内容。それらは他の多くの情報の中でグローバルとローカルのシンボルを含んでいます。 ここで遭遇する問題は次のとおりです。 TD32ファイル形式のドキュメントはありません(見つけられます)。 それらに関する私の知識のほとんどは、それらを使用するJedi JCLコード(JclTD32.pas)からのものであり、そのコードの使用方法や、ローカル変数を表示するのに十分な構造があるかどうかはわかりません。私はそれがグローバルシンボルを処理することを確信していますが、ローカルについては非常に不確かです。多種多様な定数が定義されており、形式に関するドキュメントはありません。それらが何を意味するかを読むために、私は推測しておきます。ただし、これらの定数とその名前はどこかに由来している必要があります。 TDS情報を使用して見つけることができるソースは、ローカルシンボルをロードまたは処理しません。 これが正しいアプローチである場合、この質問は「TDS / TD32ファイル形式のドキュメントはありますか?ローカル変数をロードするコードサンプルはありますか?」 コードサンプルは必須ではありませんが、最小限の場合でも非常に便利です。


7
objdumpを使用して1つの関数を分解する方法は?
システムにバイナリがインストールされているので、特定の関数の逆アセンブルを確認したいと思います。できればを使用objdumpしますが、他のソリューションも使用できます。 この質問から、境界アドレスしかわからない場合は、コードの一部を逆アセンブルできる可能性があることがわかりました。この回答から、分割デバッグシンボルを単一のファイルに戻す方法を学びました。 しかし、その単一のファイルを操作し、すべてのコードを逆アセンブルしたとしても(つまり、開始アドレスまたは停止アドレスはありませんが、-dパラメーターは単純ですobjdump)、そのシンボルはどこにも表示されません。問題の関数が静的である限り、これは理にかなっているので、エクスポートされません。それでも、valgrind関数名は報告されるので、どこかに保存する必要があります。 デバッグセクションの詳細を見ると、その名前が.debug_strセクションに記載されていることがわかりますが、これをアドレス範囲に変換できるツールがわかりません。

4
実稼働環境にデバッグシンボル(pdbファイル)をデプロイするリスクは何ですか?
例外strackトレースをログに記録するアプリケーションがあり、本番環境にデプロイするときに、これらのスタックトレースにファイル名と行番号を含める必要がありました。アセンブリを使用してデバッグシンボルを展開する方法を理解しましたが、問題を調査する過程でこの質問に遭遇しました。これは、本番環境にpdbファイルを含めることはお勧めできないことを意味します。受け入れられた回答へのコメントは、「...デバッグ情報は機密データを提供し、攻撃ベクトルになる可能性があります。アプリが何であるかによって異なります」と述べています。 では、どのような種類の機密データが公開される可能性がありますか?デバッグシンボルを使用してアプリケーションを危険にさらすにはどうすればよいですか?技術的な詳細に興味がありますが、私が本当に探しているのは、特定のアプリケーションおよび実稼働環境にデバッグシンボルを含めるリスクを評価するための実用的な方法です。言い換えれば、起こりうる最悪の事態は何でしょうか。 編集:フォローアップの質問/説明 したがって、これまでの全員の回答に基づくと、この質問は.NETアプリケーションでは少し単純化できるようです。MichaelMaddoxの回答にリンクされているJohnRobbinsブログのこのビットは、私に飛び出しました。 .NET PDBには、ソースファイル名とその行、およびローカル変数名の2つの情報のみが含まれています。他のすべての情報はすでに.NETメタデータに含まれているため、PDBファイルで同じ情報を複製する必要はありません。 私にとって、これは他の人がReflectorについて言っていることを繰り返しますが、本当の問題はアセンブリへのアクセスであるという意味です。それが決定されたら、PDBに関して行う唯一の決定は、ファイル名、行番号、およびローカル変数名を公開することを気にするかどうかです(最初にエンドユーザーにスタックトレースを表示していないと仮定します)。それとも私はこれを単純化しすぎましたか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.