C 二维数组调试¶
一维数组¶
一维数组在调试器中是可以直接显示的 本质上变量x
是一个指针 指向数组对应的第一个元素
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
|
Output:
Text Only | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
二维数组¶
二维数组具体实现我并不清楚 以前好像说过要尽量避免使用二维数组 坑比较多
一定要用的话,传参可以通过如下两种比较直观的方式
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
Output:
Text Only | |
---|---|
1 2 3 4 5 6 7 8 |
|
调试二维数组¶
二维数组本质上也是一个指针指向数组第一行的第一个元素 但是可能由于编译器编译时去掉了长度信息(或者本来就没有) 所以需要在调试时手动指定如何读取该指针处的结构体
在这个例子里面 使用 *(int(*)[3][4])A
这样的表达式来做一次转换就可以了
- Xcode > 调试开始后的变量窗口 > 右键 > Add Expression...
- VS Code > 调试开始后的变量窗口下方的Watch窗口 > 加号
lldb调试过程¶
Text Only | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
可以看到 用 frame variable A
只能看到第一行的数据,我们需要手动通过表达式做转化
References¶
- https://blog.csdn.net/weixin_42033845/article/details/107921889
- https://blog.csdn.net/Kobe51920/article/details/90739757
- https://github.com/Microsoft/vscode-cpptools/issues/172#issuecomment-280520910
- https://lldb.llvm.org/use/tutorial.html
- https://github.com/Yang-Xijie/C-Makefile-template