如何在vscode中使用gdb命令行与打印指针数组

在debug的程序处于中断状态时(必须是中断状态!), 可使用-exec command的格式在vscode对应的debug窗口中输出gdb命令:

image-20220910160328982

如何打印一个指针数组

以main()函数的指令数组argv为例:

可以通过如下指令打印其值:

-exec x/16s *argv
0x7fffffffe435:	"/home/LinuxC++/inbox/youShuanServProg/15/threadpool/websrv_old"
0x7fffffffe474:	"127.0.0.1"
0x7fffffffe47e:	"8080"
0x7fffffffe483:	"SHELL=/bin/bash"
0x7fffffffe493:	"COLORTERM=truecolor"
0x7fffffffe4a7:	"TERM_PROGRAM_VERSION=1.71.0"
0x7fffffffe4c3:	"PWD=/home/LinuxC++/inbox/youShuanServProg/15/threadpool"
0x7fffffffe4fb:	"LOGNAME=root"
0x7fffffffe508:	"XDG_SESSION_TYPE=tty"
0x7fffffffe51d:	"_=/usr/bin/gdb"
0x7fffffffe52c:	"VSCODE_GIT_ASKPASS_NODE=/root/.vscode-server/bin/784b0177c56c607789f9638da7b6bf3230d47a8c/node"
0x7fffffffe58b:	"MOTD_SHOWN=pam"
0x7fffffffe59a:	"LINES=17"
0x7fffffffe5a3:	"HOME=/root"
0x7fffffffe5ae:	"LANG=en_US.UTF-8"
0x7fffffffe5bf:	"LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc"...

指令格式为 x/nf obj, 其中x是打印目录,/n代表打印单元的数量, f代表以什么形式输出, 如t是二进制, x是16进制,上面s就是按字符串输出,

上面指令的意思就是, 打印argv指向地址前16个字符串单元的内容。

其他示例:

-exec x/16xb *argv
0x7fffffffe435:	0x2f	0x68	0x6f	0x6d	0x65	0x2f	0x4c	0x69
0x7fffffffe43d:	0x6e	0x75	0x78	0x43	0x2b	0x2b	0x2f	0x69

-exec x/16tb *argv
0x7fffffffe435:	00101111	01101000	01101111	01101101	01100101	00101111	01001100	01101001
0x7fffffffe43d:	01101110	01110101	01111000	01000011	00101011	00101011	00101111	01101001
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值