CodeDynamics

C/C++対応でGUIベースのソースコード&メモリデバッガです。マルチスレッドのLinuxアプリケーションを完全にコントロールし、プログラムの状態を可視化します

CodeDynamicsはC/C++で書かれた複雑なアプリケーションを実行時に調べ、開発者がバグやメモリ問題、クラッシュの原因を発見し修正することを助けます。開発者は大規模で長時間動作するプログラムの内部が実行時にどのように動いているのかを突き止めるのに何時間、何日、場合によっては何週間も費やすことがあります。CodeDynamics はそのような追跡調査を取り払い、クラッシュの原因を素早く特定します。また、ブレークポイントやステップコマンドによってアプリケーションを完全にコントロールすることができます。

CodeDynamics は エンタープライズ規模でのマルチスレッドアプリケーションを念頭に開発されており、実行中のプログラムに対する高い可視性、スレッドの状態に対する高度なコントロールなど、ユニークな見方を提供し分析を助けます。

CodeDynamics の特長

ローグウェーブのプロダクト開発 Senior director である Bill Burns が
CodeDynamics のCodeDynamics の動的解析とデバッグ機能のハイライト
をご紹介します。
主な機能とモダンで使いやすいインターフェースをご覧ください。

開発における課題と CodeDynamics によるソリューション

シナリオ CodeDynamics のソリューション
アプリケーションが正しくない結果を出力した。そのようなことが起きた原因を見つけるために、開発者はその関数までのデバッグセッションを最初からやり直さなければなりません。 独自のReplayEngineの機能を使って、同じデバッグセッション内で簡単にその関数を呼び出した場所にまで遡ることができます。そのまま関数の実行を辿って、そのエラーを引き起こした場所と原因を正確に知ることができます。
アプリケーションが正しくない書き込みをメモリに対して行うと、スタックフレームが上書きされ、プログラムがクラッシュします。これにより、通常、スタックトレースが無効になり、開発者は、どこでアプリケーションが実際にクラッシュしたのか特定できなくなります。 クラッシュの時点からさかのぼってスタックトレースを参照し、クラッシュ時点とクラッシュの原因になったデータを特定し再構築します。
スレッドレベルでブレークポイントを置いたり、個々のスレッドをコントロールしたり、スレッド間を移動してそれらの状態を理解することは、時間と工数がかかる上、粒度の細かいコントロールができません。 CodeDynamics のインターフェイスを使用すれば、アプリケーション内で実行されているスレッドと、その現在の状態、コード内のどこで停止したかを明確に把握できます。新しいスレッドに移動するだけで、あるスレッドから他のスレッドへ分析コンテキストを簡単に切り替えられます。
スレッド単位でブレークポイントを設定できるため、スレッドの実行を細かい粒度で制御できます。また、スレッド単位でステップ操作を個別に制御できます。
vector、list、map、sets などの STL コンテナクラスをデータのわかりやすい概念的表現と、それに対応する低レベル実装として表示できます。 STL および Boost コンテナを自動的に検出して、わかりやすい概念ビューに変換します。たとえば、CodeDynamics では、リンクの付いたリストは、リンク付きのノード実装ではなく、値の単純な配列として表示されます。
ターゲットの実行可能ファイルまたは実行中の実行可能ファイルに対して動的解析を開始できます。Eclipse や NetBeans といった IDE デバッガーには、プロジェクトを維持し、ターゲットの実行可能ファイルのデバッグ起動を設定するためのオーバーヘッドが必要になります。 新たな対象に対してすぐに動的解析ができます。または実行中のプログラムにアタッチすることもできます。

ローグウェーブの Capability