問題タブ [ddd-debugger]
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.
multithreading - gdb/dddのスレッドに関する情報を取得する
を使用してマルチスレッドアプリケーションをデバッグしていますddd
。
同時に、毎秒、新しいスレッドが作成されていることをDDDコンソールで確認できます。
そしてその直後に破壊されました。
数分後、私はこのテキストを出しました
このLWPが増加します。
脅威の出入りが速すぎて、[ステータス]->[スレッド]をクリックしたウィンドウを使用して表示できません。そのスレッドに関する情報を取得する方法について少し教えていただけますか?
このLWPが常に増加している理由を知っていますか?そのスレッドにランチされる関数を取得する方法はもっと重要ですか?
すべてのAFGに感謝します
c - DDDを使用してプロセスがスタックしている場所を見つける方法
Cで記述されCentOS5.5で実行されているTCPSvrプロセスがあります。外部クライアントのTCPサーバーとして機能し、確立したUnixドメインソケットを使用してシステム内の他のプロセスとのIPC通信も行います。マルチスレッドプロセスではありません。一度に1つのタスクを実行します。TCPソケットまたは内部プロセスで確立されたIPCソケットのいずれかで要求をリッスンするために使用するepoll_wait()があります。epoll_wait()関数が壊れたら、誰でもリクエストを処理してからepoll_wait()に戻ります。
(IPCではなく)外部からこのプロセスに接続するTCPクライアントがあります。接続に成功し、要求メッセージを送信し、応答を返します。堅牢性などをテストするために、これを無限ループに入れました。
しばらくすると、TCPサーバーはTCPクライアントからの要求への応答を停止します。TCPクライアントは正常に接続し、要求メッセージを送信しますが、TCPサーバーから応答メッセージを返しません。
したがって、TCPサーバーがどこか別の場所でスタックしていて、何かをしようとして、epoll_wait()に戻って他の要求を処理していないと思います。ログを使用してそれを理解しようとしましたが、それは正確にどこを理解するのに役立ちませんプロセスがスタックしています。
そのため、プロセスが何をしているのかについて、情報を提供できるデバッガーを使用したいと思いました(関数名は素晴らしいでしょう)。ブレークポイントを設定すると、TCPサーバープロセスに大量のファイルと関数が含まれるため、圧倒されます。
CentOS 5.5でDDDを使用して、何が起こっているのかを把握しようとしています。プロセスに正常にアタッチします。次に、「ステップ」、「ステピ」、「次へ」ボタンをクリックしますが、何も起こりません。
ところで、デバッグにEclipseを使用し、このプロセス(または任意のプロセス)に接続すると、常に「__kernel_vsyscall()」が表示されます。これは、プログラムがデフォルトで中断することを意味しますか?その場合、プログラム内で続行するには、どうすれば__kernel_vsyscall()呼び出しから抜け出すことができますか?f8を押すと出てきますが、スタックトレースが緩んでいるので、どこにあるのかわかりません。どこにあるのかわからないので、ブレークポイントをどこに置くかわかりません。
要約すると、プロセスがどこでスタックしているのか、またはプロセスが何をしているのかを把握し、その時点からデバッグを試みたいと思います。
どうすればこれを行うことができますか?
ありがとうアミット
unix - ddd/dbx に接続されているクラッシュしたプロセスからコアダンプを生成します
Solaris の ddd で dbx を実行しています。接続されたプロセスがクラッシュしたため、デバッガーでスタックを調べることができます。
後で使用するために、このコア ダンプをディスクに保存します。
Google はコア ダンプを作成するいくつかの方法を教えてくれますが、いずれも ddd/dbx コマンドではありません。gcore
dbx がすでにプロセスを保持しているため、プロセスを取得できません。
では、これを行うにはどうすればよいですか?ありがとう。
c++ - ddd が「準備が整うのを待っている」とき、gdb/dbx は何をしていますか?
C++ プログラムの gdb と dbx の両方のフロントエンドとして ddd を使用しています。
多くの場合、明白な原因がなくても、next
「gdb の準備が整うのを待っています」または「dbx の準備が整うのを待っています」というメッセージが表示されてハングします。
彼らが何をしていて、永遠に時間がかかり、明らかな結果をもたらさないのか、誰か知っていますか? そして、私はそれが起こるのを止めることができますか?
同じプロセス (および同じ関数) で 1 分前にステップ実行/次へ進むのに十分な量のものが既にロードされていることを心に留めておいてください。 . また、ddd と dbx の両方が同じ動作パターン (多くの異なる実行可能ファイルおよび異なるプラットフォームで) を持っているという事実は、どちらのデバッガーのバグではなく、データ内の何かであると私に思わせます。
c - Cバッファオーバーフロー表示メッセージ(UbuntuおよびDDDを使用)
これは私がこれまでに入手したコードです(そのベースを与えられ、それに固執する必要があります。そのため、badf関数とf関数があります)
目標は、プログラムが命令ポインタにオーバーフローすることによってHelloメッセージを出力することです。Ubuntuでデータ表示デバッガーを使用すると、この表示のアドレスは0x0804811だと思います。
プログラムを実行してx/16x $ espを使用すると、スタック内の次のアドレスは1秒になります(上のアドレスから最後の2桁だけが取得されていると推測されます)
不思議に思うのは、次のアドレスを最後の2桁だけでなく、完全なアドレスにする方法です。
また、32は16(上記で定義されたバッファー)+ 8(ベースポインター)+ 8(命令ポインター)から計算されます。
私はこの特定の問題を知っているので、助けてくれてありがとう。
c++ - ddd デバッガー: exe は CygWin 内でビルドする必要がありますか?
Windows では、通常、VC Compiler と自分で作成した makefile を使用して、Windows コマンド プロンプトで exe をビルドします。g++への移行を考えていました。MSVC への依存を取り除くために、CygWin/X をインストールして、ddd デバッガーを利用することを考えていました。私の質問は次のとおりです。CygWin ターミナルに完全に移行する必要がありますか?それとも、現在のように Windows コマンド プロンプトを続行して、完成した Windows exe をddd
(何らかの方法で) に提示できますか?!
emacs - emacs(またはDDD)でgdbを使用する場合、ブレークポイントを設定できません
私はemacsでgdbを使おうとしています。デバッグしようとしているライブラリはプロセスによってロードされ、直接実行することはできません。したがって、gdb内でattachコマンドを使用してプロセスにアタッチします。プロセスへのアタッチとブレークポイントの設定は、シェルからgdbを使用する場合は正常に機能しますが、emacsでgdbを使用する場合(MxgdbまたはMxgud-gdbを押す)、ブレークポイントを設定できません。「0x7efb04のメモリにアクセスできません」というエラーが表示されます。私はemacs23.1.1を使用しています。
これが私が従うプロセスの内訳です:
M-x gdb
またはを押して、M-x gud-gdb
emacs内でgdbを起動します。- デバッグシンボルでビルドされた実行可能ファイルの名前を入力します。
- 「attach[PID]」と入力して、実行中のプロセスにgdbをアタッチします。
- 次のように入力してブレークポイントを設定します:filename:linenumber。
最後のステップで、「0x7efb04のメモリにアクセスできません」というエラーが表示されます。
なぜこれが起こっているのか考えはありますか?
編集:DDD(UI for GDB)を使用すると同じエラーが発生します。だから私はそれがemacs特有の問題ではないと思います。
c - DDDのようなビジュアルディスプレイデバッガー
MacOSXlionにdddをインストールするのに大きな問題があります。
dddのような他のビジュアルディスプレイデバッガーを知っている人はいますか?
ビジュアルディスプレイデバッガーにする必要があります。
Macに日食がありますが、デバッガーが付属していますか?はいの場合、それに到達する方法は?
linux - プログラムをデバッガなしで実行した場合とデバッガありで実行した場合では、実行動作が異なります。
Linuxでプログラムを実行しています。プログラムをdddデバッガーで実行した場合と実行しない場合では、プログラムの動作が異なります。つまり、プログラムはさまざまな時点で停止します。なんでそうなの?それはデバッガーに依存していますか、それともすべてのデバッガーで時々発生しますか?
assembly - DDDでのeFlagsの解釈
私は、書く方法と理解する方法、そしてツールと関連ツールを効果的x86 Assembly
に使用する方法を学ぼうとしています。GDB
これを行うために、私はDDD
のフロントエンドとして使用していGDB
ます。
すべて同じレジスタに格納されているように見える条件フラグ(eflags?)が何であるかを理解するのに苦労しています。レジスタ、アセンブリコード、および関連するCコードを投稿します。助けてくれてありがとう。
指定されたブレークポイントで、レジスタは次のように表示されます。0x293 [CF AF SF IF]
以下は実行中のCコードです。(これは私のコーディングスタイルの例ではありません。GCCにcompl
操作を強制的に使用させようとしています。)
以下は、私のマシンがそれを分解したアセンブリです。