首页 > 其他分享 >【gdb】打印ASCII和宽字符字符串

【gdb】打印ASCII和宽字符字符串

时间:2023-10-15 18:33:57浏览次数:39  
标签:abcd demo 打印 gdb 字符串 root ASCII out

打印ASCII和宽字符字符串

1. 例子:

#include <stdio.h>
#include <wchar.h>

int main(void)
{
        char str1[] = "abcd";
        wchar_t str2[] = L"abcd";
        
        return 0;
}

用gdb调试程序时,可以使用“x/s”命令打印ASCII字符串。以上面程序为例:

[root@node01 demo]# gdb ./a.out -q
Reading symbols from /root/demo/a.out...done.
(gdb) start
Temporary breakpoint 1 at 0x400511: file demo.cpp, line 6.
Starting program: /root/demo/./a.out 

Temporary breakpoint 1, main () at demo.cpp:6
6	  char str1[] = "abcd";
(gdb) n
7	  wchar_t str2[] = L"abcd";
(gdb) 
9	  return 0;
(gdb) x/s str1
0x7fffffffe480:	"abcd"

可以看到打印出了str1字符串的值。打印宽字符字符串时,要根据宽字符的长度决定如何打印。仍以上面程序为例:

[root@node01 demo]# gdb ./a.out -q
Reading symbols from /root/demo/a.out...done.
(gdb) start
Temporary breakpoint 1 at 0x400511: file demo.cpp, line 6.
Starting program: /root/demo/./a.out 

Temporary breakpoint 1, main () at demo.cpp:6
6	  char str1[] = "abcd";
(gdb) n
7	  wchar_t str2[] = L"abcd";
(gdb) 
9	  return 0;
(gdb) p sizeof(wchar_t)
$1 = 4
(gdb) x/ws str2
0x7fffffffe460:	U"abcd"

 

参考资料

1. gdb手册

2. 打印ASCII和宽字符字符串

标签:abcd,demo,打印,gdb,字符串,root,ASCII,out
From: https://www.cnblogs.com/sunbines/p/17765958.html

相关文章

  • 【gdb】设置观察点
    设置观察点1.例子:#include<stdio.h>#include<pthread.h>typedefstruct{inta;intb;intc;intd;pthread_mutex_tmutex;}ex_st;intmain(void){ex_stst={1,2,3,4,PTHREAD_MUTEX_INITIALIZER};printf("%d,%d,%d,%d\n&......
  • 【gdb】run和start区别
    run和start区别gdb调试器提供了多种方式来启动目标程序,其中最常用的就是run指令,其次为start指令。也就是说,run和start指令都可以用来在gdb调试器中启动程序,它们之间的区别是:1、默认情况下,run指令会一直执行程序,直到执行结束。如果程序中手动设置有断点,则run指令会执行......
  • 【gdb】断点管理
    断点管理命令说明:命令说明breakb断点命令break函数名为函数设置断点break代码函数为某一行设置断点break类名:函数名在某个类的函数设置断点break文件名:函数名在文件名指定某个函数设置断点break文件名:行数在文件名执行的代码行设置断点br......
  • 【gdb】向上或向下切换函数堆栈帧
    向上或向下切换函数堆栈帧1.例子:#include<stdio.h>intfunc1(inta){return2*a;}intfunc2(inta){intc=0;c=2*func1(a);returnc;}intfunc3(inta){intc=0;c=2*func2(a);retur......
  • perl判断字符串包含
    perl判断字符串包含perl中没有判断字符串包含的函数,可以用正则表达式来实现这个功能,下面代码判断$str1是否包含$str2。if($str1=~/$str2/){...}if ($str1 !~/str2/) {    #匹配了不包含的}else {    #匹配了包含的}......
  • C语言 strdup函数把字符串复制到新空间
    头文件是string.h。根据传入的字符串参数,malloc分配空间并复制,返回首地址,该地址通过free来释放。#include<stdio.h>#include<malloc.h>#include<string.h>intmain(){chara[20]="123";char*b=strdup(a);printf("%s\n",b);free(b);......
  • ubuntu18.04环境下编译支持debuginfod的gdb
    ubuntu18.04环境下编译支持debuginfod的gdb介绍Ubuntu22.10版本才默认安装debuginfod,对于之前的发行版都需要手动配置。gdb从10.1版本才开始支持debuginfod,而Ubuntu旧的发行版里gdb都低于10.1版本。另外,debuginfod被包含在elfutils里面,且从elfutils-0.178版本后才支持,而Ubuntu......
  • 实验四报告: 熟悉Python字典、集合、字符串的使用
    实验目标本实验的主要目标是熟悉Python中字典、集合、字符串的创建和操作,包括字典的创建、访问、修改和合并,集合的创建、访问以及各种集合运算,以及字符串的创建、格式化和常用操作。实验要求通过编写Python代码,验证以下要求:熟悉Python字典的创建、访问、修改、合并。熟悉Pyt......
  • python字符串的定义和表示
    在Python中,字符串是一种表示文本数据的数据类型。你可以使用单引号(')或双引号(")来定义字符串,如下所示:str1='HelloWorld!'str2="Pythonisawesome."Python中的字符串可以包含任何字符,包括字母、数字、标点符号和特殊字符。你还可以使用转义字符(\)来表示一些特殊字符,如换行符......
  • 第三方IDE使用gdb调试Qt实现pretty print
      直接使用gdb调试Qt应用时,Qt的一些数据类型没法友好的显示出来,而qtcreator可以很好的展示出来,qtcreator也是通过gdb来调试的,在展示数据时,其实是gdb通过python脚本来处理后显示的,这些python脚本位于/usr/share/qtcreator/debugger这个位置(ubuntu20.04)。gdb在启动时,会自动在某......