2016-09-12 5 views
0

C言語で書かれたこの巨大なコードベースを手渡されました。私はそれをリバースエンジニアリングして変更できるように、ある機能を見つける必要があります。このコードは何十万行もあるので、このプロセスはかなり遅いと想像することができます。私はそれに沿ってスピードを上げる方法について考えていますが、可能かどうかはわかりません。Visual Studioでは、型を最初に使用したときに中断することは可能ですか?

struct A{ 
    /* some data */ 
}; 

struct B{ 
    A* a; 
    /* some data */ 
}; 
/* note A and B are defined in different files */ 

私はB-> Aは最初にBの任意のインスタンスに変更/割り当てられたときにVisual Studioが壊したいのVisual Studio Professionalの2012年に行うには、このことが可能です:私はこれに似ている何かがありますか?

+0

コンストラクタにブレークポイントを設定できますか? – kichik

+0

悲しいことに、それほど単純ではありません。コンストラクタはその値を 'NULL'に初期化し、後で他のコードはその値を割り当てます。私は、コンストラクタにブレークポイントを設定して、その時点からそれを手助けするステップを進めることができたと思いますが、私が望むものを得ることはできません。 – Cody

+0

トリガすると、 'B-> a'にメモリブレークポイントを設定し、トリガするのを待つことができます。 – kichik

答えて

2

コンストラクタにタイプB(またはCコードのコンストラクタに相当する)のブレークポイントを設定できます。そのトリガーが発生すると、メモリブレークポイントをB->aに設定し、そのブレークポイントがトリガーするのを待ちます。

+0

OPは* any * 'B :: a'へのアクセスを中断したいと考えました。データブレークポイントを設定することは、特定の 'B'オブジェクト内の特定の* B :: aのみ可能です。これはまったく別のものです。 – AnT

+0

これは、合理的な数の 'B'インスタンスがある場合にのみ機能します。 – kichik

+0

@AnT私の研究はこれが不可能であることを示していますが、コンストラクタが最初に呼び出されたときにブレークポイントを設定すると、インスタンスが最初に作成された場所がわかり、2番目のブレークポイントによって必要なデータが得られます。それは直接私の質問に答えることはできませんが、それは私に私の質問が不要になる回避策を与えます、私はまだこれを受け入れています。 – Cody

関連する問題