問題タブ [debug-information]
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.
visual-studio - Delphi に他のデバッグ形式を読み取らせる方法はありますか?
Delphi で何かをデバッグしていて、スタック トレースにシステム ライブラリがある場合、ライブラリの名前と呼び出されている関数を取得します。残念ながら、これは他の外部 DLL には当てはまらないようです。私は Visual C++ 2005 でコンパイルされたものを持っていますが、何らかの問題が発生するたびに、VS デバッガーを接続して、元の入り口からコードのトレースを開始する必要があります。Delphi では何が問題なのかわかりません実際に起こっています。
この DLL は VS のデバッグ情報をコンパイルしてビルドされていますが、Delphi にはそれを読み取る方法がないようです。システム ライブラリと同じように、スタック トレースで意味のある関数名を取得できるように、デバッグ オプションをいじってそれを変更する方法はありますか?
c++ - ユーザーへの例外デバッグ情報の表示
現在、OSSアプリケーションに例外と例外処理を追加する作業を行っています。例外は最初から一般的な考え方でしたが、私は優れた例外フレームワークを見つけたいと思っていました。正直なところ、C ++の例外処理の規則とイディオムを、使用を開始する前にもう少しよく理解してください。私は、C#/。Net、Python、および例外を使用するその他の言語について多くの経験があります。私はそのアイデアに不思議ではありません(しかし、マスターからはほど遠いです)。
C#とPythonでは、未処理の例外が発生すると、ユーザーは優れたスタックトレースを取得し、一般に非常に有用な貴重なデバッグ情報を多数取得します。OSSアプリケーションで作業している場合、ユーザーにその情報を問題レポートに貼り付けることは...まあ、それなしでは生きていけないと思っているとだけ言っておきましょう。このC++プロジェクトでは、「アプリケーションがクラッシュしました」、またはより多くの情報を持っているユーザーから「X、Y、Zを実行した後、クラッシュしました」というメッセージが表示されます。しかし、私もそのデバッグ情報が欲しいです!
クロスプラットフォームとクロスコンパイラの方法でC++例外スタックトレースを取得する方法は見当たらないという事実で、私はすでに(そして非常に困難に)安心していますが、関数名などを取得できることはわかっています。関連情報。
そして今、私は未処理の例外のためにそれを望んでいます。私はboost::exceptionを使用していますが、この非常に優れたdiagnostic_information thingsamajigを使用して、(マングルされていない)関数名、ファイル、行、そして最も重要なことに、プログラマーがその例外に追加したその他の例外固有の情報を出力できます。
当然、可能な限りコード内で例外を処理しますが、カップルをすり抜けさせないようにするのはそれほど単純ではありません(もちろん、意図せずに)。
したがって、私がやりたいのは、メインのエントリポイントをtry
ブロック内にラップcatch
して、アプリケーションでエラーが発生したことをユーザーに通知する特別なダイアログを作成し、ユーザーが[詳細]または[デバッグ]をクリックすると、より詳細な情報が表示されるようにすることです。情報」など。これには、diagnostic_informationの文字列が含まれます。次に、この情報を問題レポートに貼り付けるようにユーザーに指示できます。
しかし、しつこい腸の感覚は、すべてをtryブロックでラップすることは本当に悪い考えだと私に言っています。私がやろうとしていることは愚かですか?もしそうなら(そしてそうでなくても)、私が望むことを達成するためのより良い方法は何ですか?
assembly - Gnu Assembler (GAS) の CFI ディレクティブは何に使用されますか?
.cfi_startproc
すべての行の後に.CFI ディレクティブがあるようで、これらにはさまざまな種類があり.cfi_endproc
ます 。
これらの目的がわかりませんでした。
visual-studio-2008 - 純粋に他の静的ライブラリの集合体である静的ライブラリのデバッグ情報を保持する方法はありますか?
純粋に他の静的ライブラリの集合体である静的ライブラリを構築するプロジェクトがあります。これは、入力ライブラリをファイルとしてプロジェクトに追加することで実現されます。ただし、入力ライブラリでデバッグ情報が利用できる場合でも、出力集約ライブラリで利用できるものはありません。別のバイナリにリンクするときに集約ライブラリにデバッグ情報が必要な場合は、そのバイナリをビルドするプロジェクトを変更して、集約ライブラリ自体ではなく、集約ライブラリの入力ライブラリにリンクする必要があります。
この方法で作成された集約ライブラリでデバッグ情報を利用できるようにする方法はありますか?または、集約ライブラリを別の方法で作成する必要がありますか(入力ライブラリをファイルとしてプロジェクトに追加しないでください)?
java - `/ usr / bin / strip`に対応するJavaはありますか?
/usr/bin/strip
LinuxのC/C ++オブジェクトファイルと同じように、Java .classファイルからデバッグ情報を削除できるツールはありますか?
編集:私はThiloとPeter Mmmの両方の答えが好きでした:Peterは短く、JDKに何が付属しているかについての私の無知を露呈するほどでした。ThiloのProGuardの提案は、それが提供するように見えるすべての追加機能について、とにかく私が間違いなくチェックしているものです。ティロとピーター、ありがとう!
c - デバッグ情報を Visual Studio の「出力」ウィンドウに送信する簡単な方法
C アプリケーションを作成するために、 Visual Studio 2010で空のプロジェクトを開始しました。デバッグ情報を出力ウィンドウ (メニューDebug -> Windows -> Output )に送信するにはどうすればよいですか? 実装するための比較的簡単な方法または類似のものはありTRACE
ますOutputDebugString
か?
c - デバッグ情報とは
私は自分のやり方を学んでいる中級 C プログラマーです。私は最近、GDB の使用を学び (実際に強制されました)、Ptrace を使用していくつかのコードを実行しています。
ptrace でいくつかのコードを閲覧していて、「DEBUG INFO」に出くわしました。
これが何を意味するのかを知りたいのですが、いつコードに含める必要がありますか?
デバッグ情報ファイルとは何ですか?
これに関連するグーグルやウィキから多くを見つけることができませんでした。そのタグのwikiもありません。あなたが正しい方向に私を向けることができれば、私はそれを書くことで返済できるかもしれません.
gcc - objdump/readelfは変数情報を取得します
コンパイルされたcプログラムからグローバル変数に関する情報を取得する必要があります。私はここで同様の質問をしました。
私が今抱えている問題は、変数情報を抽出しようとしているプログラムが非常に大きく、ツリーをテキストで取得するだけで4秒かかることです(readelf -w[i] file.out
)。次に、必要な場所に到達するために、前後にジャンプするツリーを解析する必要があります。たとえば、変数がタイプのconst unsigned char * volatile MyVariable
場合、ツリーの5つの異なるノードに移動する必要があり、プログラムに1000個の変数が含まれている場合、必要なものを取得するのに時間がかかります。
ですから、私の質問は、readelfコマンドをより有効に活用して必要なものを実現するにはどうすればよいかということです。このreadelf -w[i] file.out
コマンドは、必要な情報(すべての関数、サブルーチン、ローカル変数など)を提供します。たとえば、そのコマンドの出力を調べてグローバル変数を取得する代わりに、readelf -s --wide file.out
コマンドを使用して変数のみを取得します。そのコマンドは変数の名前を教えてくれるので、たとえば変数が整数であるかどうかを確認するためにツリーを調べる必要があります。
このリンクの237ページには、たとえばタイプに関する情報を取得する方法の例があると思います。ここに写真があります:
必要なものを解析するのに約15秒かかりますが、まだいくつかのバグがあります。車輪の再発明をしなくても、readelfコマンドをより有効に活用できれば便利です。
windows - コンパイルされたプログラムで変数を見つけるためにパターンを理解する
コンパイルされたcプログラムからグローバル変数を抽出する必要があります。私が今していることは、その情報を取得するためにLinuxreadelfコマンドを使用することです。言い換えれば、私がするとき:
ここreadelf.exe
からダウンロードできるプログラムでそれを行います。私はウィンドウを使用していて、それが私が必要とする唯一のコマンドだからです。Linuxでは、コンソールを開いて実行しますreadelf -w[i] myFile.out
とにかく、そのコマンドを実行すると、次のようになります。
その「ツリー」を使用して、すべてのグローバル変数とタイプを取得できます。たとえば、最初の変数NetBuf_ID_Ctr
を見ると、ノードの型に関する情報を取得できることがわかります <0x86923>
。そのノードはツリーのどこかにあります!実際に最初のノードであるものを見てください。開始するもので <1><86923>....
、そのノードの内部を見ると、変数が4バイトのサイズのunsignedintであることがわかります。
今私の質問は、そのreadelfコマンドを使用すると
、解析する必要のある192883行のテキストを取得することです。このツリーは、私が必要としているものよりも多くの情報を私に与えてくれます。16進エディタでファイルを調べると、次のように表示されます。
同じ変数を見つけることができ、そのNetBuf_ID_Ctr
隣(強調表示)はアドレス<0x86923>
です!
木の作り方を教えてくれる場所はインターネット上にありますか?コマンドreadelf.exeは、ツリーを作成するのに.1秒かかります。出力をStreamReaderに配置するため、非常に高速です。そのStreamReaderをメモリに配置して、非常に時間がかかる文字列に変換したい場合。
編集
要約すると、myFile.outからツリー(readelfの出力)がどのように構築されているかを知りたいと思います。そのパターンを理解することも、インターネット上のその方法を説明する場所もわかりません。
grails - Groovy、STS、およびデバッグ情報、情報、またはシンボル
SpEL で Spring Security アノテーションを使用して、アノテーション付きメソッドの引数に名前でアクセスできるように、Groovy コードにデバッグ情報またはシンボルを含めようとしています。例えば:
Groovy RunTest スクリプトを使用する STS 'run-test' コマンドを使用すると、すべて正常に動作します。つまり、メソッドの引数に名前でアクセスできるということです。ただし、「run-app」コマンドを使用しようとすると、デバッグ情報が含まれません。
RunTest スクリプトを調べたところ、スクリプトはデバッグ オプションを true に設定して Java コンパイラを明示的に呼び出します。
開発環境と本番環境のデバッグ情報を有効にするにはどうすればよいですか? Groovy コードで Java コンパイラを呼び出すには、Groovy スクリプトを変更する必要がありますか?それとももっと簡単な方法はありますか?