2016-03-27 17 views
0

私はアプリをデバッグしていて、rcxに格納されている値で指し示されているメモリ領域を確認する必要があります。通常、コードのために、これは変数(ポインタ)を選択し、ポインタから始まる観戦する要素の数とともに、迅速な時計を追加することによって行われます:ポインタをレジスタに格納する(Visual Studio)

quickwatch

私はへのポインタを取得したいです

#include <stdio.h> 

int main() { 
000000013F1217C0 push  rbp 
000000013F1217C2 push  rdi 
000000013F1217C3 sub   rsp,0E8h 
000000013F1217CA lea   rbp,[rsp+20h] 
000000013F1217CF mov   rdi,rsp 
000000013F1217D2 mov   ecx,3Ah 
000000013F1217D7 mov   eax,0CCCCCCCCh 
000000013F1217DC rep stos dword ptr [rdi] 
    goto mylabel; 
000000013F1217DE jmp   $mylabel (013F1217EEh) 
000000013F1217E0 jmp   $mylabel (013F1217EEh) 
    printf("Skipped\n"); 
000000013F1217E2 lea   rcx,[string "Skipped\n" (013F129C28h)] 
000000013F1217E9 call  printf (013F1211CCh) 
mylabel: 
    printf("goto ftw!\n"); 
000000013F1217EE lea   rcx,[string "goto ftw!\n" (013F129C38h)] 
000000013F1217F5 call  printf (013F1211CCh) 
    return 0xf00d; 
000000013F1217FA mov   eax,0F00Dh 
} 
000000013F1217FF lea   rsp,[rbp+0C8h] 
000000013F121806 pop   rdi 
000000013F121807 pop   rbp 
000000013F121808 ret 

がどのように値がRCXで指されることがあります。文字列は、以下のコードでrcxに移動しますか?アセンブリでは、構文は次のようになります。

[rcx+index] 

Visual Studioではどのように値を見ることができますか?

私が追加しようとしました:[クイックウォッチで

[rcx] 
[rcx],10 
rcx,10 

を、私は得る最初の2つのエントリのために:

タイプ名

を許可し、私は間接参照することはできません最後のためにされていませんrcx以前と同じように表示されます。

編集:所望のタイプにrcxの値を鋳造

、働きます。上の例では、(char*)rcxにクイックウォッチが追加され、デバッグウィンドウに文字列全体が表示されます。他のタイプ(すなわち整数)については、要素の数も時計に指定されていなければならず、それ以外の場合は最初の値のみが表示されます。たとえば、(int*)rcx, 10は、rcxに格納されたアドレス値から始まる10個の4バイト整数を示します。タイプは、レジスタに格納された各データに対して調整する必要があります。

+2

私は前のレジスタでこれを行っていませんでした、しかし、単にあなたがトリックを行う必要があるとして、それを検査するタイプに値をキャストする - 例えば'(char *)rcx' – melak47

+0

これはうまくいきましたが、逆参照されるデータのタイプが変わるたびに変更する必要があります。 – Sebi

答えて

0

レジスタの値を_asm {...}を使用してc/C++ポインタにコピーしてから、それをいつものように見てください。ここ あなたはインラインアセンブリからCの変数にアクセスする方法を見つけることができます: https://msdn.microsoft.com/en-us/library/fabdxz08.aspx

+0

私はコードを変更してはいけません。高レベルの_asm {}ディレクティブは使用できません。 – Sebi

+1

これは私が考えると答えているhttp://stackoverflow.com/questions/23020232/how-to-view-address-of-register-in-visual-studio-debugger –

関連する問題