#include <iostream> int testString() { char szBuff[1024]; memset(szBuff, 0, sizeof(szBuff)); snprintf(szBuff, sizeof(szBuff), "%s", "abcdefg01\023\0456\r78\n9"); int * parr = new int[20]; for (int i = 0; i < 20; i++) { parr[i] = i; parr[i] = i + 1; parr[i] = i + 2; } printf("%d\n", parr[1]); printf("%d\n", parr[2]); return 0; } int main() { testString(); return 0; }
2 -- 流程控制类命令
退出循环命令:"u"或者"until 行号"
Breakpoint 1, testString () at togdb.cpp:12 12 for (int i = 0; i < 20; i++) (gdb) n 14 parr[i] = i; (gdb) u 15 parr[i] = i + 1; (gdb) 16 parr[i] = i + 2; (gdb) 12 for (int i = 0; i < 20; i++) (gdb) 20 return 0; (gdb)在循环体内使用"u"命令,执行完该循环体内的语句后,跳转到for语句出,继续按“回车”键不再进入循环体,跳过执行到for循环后的语句。
或者使用"until 20",直接跳转到for循环外的语句开始执行。
3 -- 查看内存命令和方法
使用examine命令(x)来查看内存地址中的值。命令格式如:
x/nfu <addr>
参数n | 表示要显示的内存单元的个数 |
参数f | 表示显示方式, 可取如下值: x 按十六进制格式显示变量,(hex); a 按十六进制格式显示变量,(address); d 按十进制格式显示变量,(decimal); u 按十进制格式显示无符号整型,(unsigned decimal); o 按八进制格式显示变量,(octal); t 按二进制格式显示变量,(binary); i 指令地址格式,(instruction); c 按字符格式显示变量,c(char); f 按浮点数格式显示变量,(float) |
参数u | 表示一个元素单元的长度,可取如下值: b 表示单字节,(byte); h 表示双字节,(halfword); w 表示四字节,(word); g 表示八字节,(giant, 8 bytes) |
x/100cb szBuff 表示从szBuff开始读取100个元素,每个元素1个字节,以字符形式显示;
x/100xb szBuff 表示从szBuff开始读取100个元素,每个元素1个字节,以十六进制显示;
x/100xh szBuff 表示从szBuff开始读取100个元素,每个元素2个字节,以十六进制显示,实际读取200个字节;