以下の様なプログラムをデバッグするとします
- 動的確保されたメモリに保存された3つの文字列が存在します
- それらの文字列の先頭の値を指すアドレスが動的確保されたポインタへのポインタに保存されています
c
1#include <string.h> 2#include <stdlib.h> 3 4int main(void) 5{ 6 char *p0 = strdup("red.."); 7 char *p1 = strdup("green"); 8 char *p2 = strdup("blue."); 9 char *p3 = NULL; 10 char **pp = malloc(sizeof(char *) * 4); /* この変数をデバッグ中にウォッチしたい */ 11 12 pp[0] = p0; 13 pp[1] = p1; 14 pp[2] = p2; 15 pp[3] = p3; 16 17 /* 何かをする */ 18 19 return (0); 20}
実現したいこと
VSCodeのデバッガーのウォッチビューで、以下の様な表示形式で各ポインタへのポインタが指す文字列のchar
の値(や先頭値のアドレス)をウォッチする方法を教えて下さい。
text
1<pp用のウォッチ式>: <ppのアドレス> 2 |- pp[0]: [6] <pp[0]のアドレス> 3 | |--- [0]: 'r' 4 | |--- [1]: 'e' 5 | |--- [2]: 'd' 6 | |--- [3]: '.' 7 | |--- [4]: '.' 8 | |--- [5]: '\0' 9 | 10 |- pp[1]: [6] <pp[1]のアドレス> 11 | |--- [0]: 'g' 12 | |--- [1]: 'r' 13 | |--- [2]: 'e' 14 | |--- [3]: 'e' 15 | |--- [4]: 'n' 16 | |--- [5]: '\0' 17 | 18 |- pp[2]: [6] <pp[2]のアドレス> 19 | |--- [0]: 'b' 20 | |--- [1]: 'l' 21 | |--- [2]: 'u' 22 | |--- [3]: 'e' 23 | |--- [4]: '.' 24 | |--- [5]: '\0' 25 | 26 |- pp[3]: [6] <0x0000000000000000> 27 |--- [0]: 'r' 28 |--- [1]: 'a' 29 |--- [2]: 'n' 30 |--- [3]: 'd' 31 |--- [4]: 'o' 32 |--- [5]: 'm'
既に知っていること
ウォッチビューに(char(*)[6])pp[0]
というウォッチ式を追加すれば、pp[0]
が指す先の文字列のpp[0][0]
から pp[0][5]
までのchar
の値をウォッチすることができることは知っていますが、多数のポインタを扱っている場合に、(char(*)[n])pp[i]
をいくつも追加するのは非効率なので、一つのウォッチ式を追加するだけで上記の様な形式でpp
をウォッチする方法や、全く別の方法(拡張機能等)を教えて下さい。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー