当前位置: 首页 > news >正文

做爰xo的视频网站试看如何快速做企业网站包括商城

做爰xo的视频网站试看,如何快速做企业网站包括商城,gta5买资产网站在建设,阿里云建设网站教学文章目录 1.1 gdb 调试回顾1.1.1 gdb list 命令介绍 1.2 反汇编命令 dis 介绍1.2.1 如何设置 gdb 汇编代码的格式 1.1 gdb 调试回顾 在GNU调试器(GDB)中,有许多命令可以帮助我们调试应用程序。 gdb: 这是一个强大的Unix下的程序调试工具。以…

文章目录

    • 1.1 gdb 调试回顾
      • 1.1.1 gdb list 命令介绍
    • 1.2 反汇编命令 dis 介绍
      • 1.2.1 如何设置 gdb 汇编代码的格式

1.1 gdb 调试回顾

在GNU调试器(GDB)中,有许多命令可以帮助我们调试应用程序。
gdb: 这是一个强大的Unix下的程序调试工具。以下是使用gdb的一个简单示例:

$ gdb ./test

在这个例子中,我们启动了gdb并将我们的程序test作为参数传递。


可执行程序 test 是由下面代码使用gcc -g -O0 test.c -o test编译出来:

#include<stdio.h>
#include<stdlib.h>static int bar(void)
{char *p = NULL;printf("I am bar,I will core dump\n");printf("%s",p);*p =0x0;return 0;
}static int foo(void)
{int i ;printf("I am foo,I will call bar\n");bar();return 0;
}int main(void)
{printf("I am main, I wll can foo\n");foo();return 0;
}

1.1.1 gdb list 命令介绍

llist: llist 命令用于显示当前源代码的行列表,包括当前行以及周围的几行代码。这对于查看代码的上下文非常有用。

例如,你可以使用llist命令来显示当前行及周围的10行代码:

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from test...
(gdb) list 10
5       {
6           char *p = NULL;
7
8           printf("I am bar,I will core dump\n");
9           printf("%s", p);
10
11          *p = 0x0;
12
13          return 0;
14      }
(gdb)

这将显示源代码的当前行周围的文本。

1.2 反汇编命令 dis 介绍

dis/disassemble: 这个命令用于查看汇编代码。例如,我们可以使用以下命令查看当前函数的汇编代码:

(gdb) disassemble

或者查看指定函数的汇编代码:

[11:01:22]sam@codingcos-sam-laptop (*^~^*) ~/test> gdb test
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:<http://www.gnu.org/software/gdb/documentation/>.For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from test...
(gdb) dis foo
Bad breakpoint number 'foo'
(gdb)

从上面的信息可以看到gdb并没有对函数 foo 进行反汇编,而是报出错误“Bad breakpoint number ‘foo’”,甚是疑惑!!!, 网上搜了一大圈也没找到原因!!

后来发现是在使用gdb时没有设置断点导致的,如果按照下面方式,则可以进行反汇编

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from test...
(gdb) b foo
Breakpoint 1 at 0x11bd: file test.c, line 19.
(gdb) dis foo
Bad breakpoint number 'foo'
(gdb) disassemble foo
Dump of assembler code for function foo:0x00000000000011b5 <+0>:     endbr640x00000000000011b9 <+4>:     push   %rbp0x00000000000011ba <+5>:     mov    %rsp,%rbp0x00000000000011bd <+8>:     lea    0xe5f(%rip),%rax        # 0x20230x00000000000011c4 <+15>:    mov    %rax,%rdi0x00000000000011c7 <+18>:    call   0x1060 <puts@plt>0x00000000000011cc <+23>:    call   0x1169 <bar>0x00000000000011d1 <+28>:    mov    $0x0,%eax0x00000000000011d6 <+33>:    pop    %rbp0x00000000000011d7 <+34>:    ret
End of assembler dump.

但是目前还不清楚为何使用 dis 命令不生效。


如下是使用 arm gdb 的反汇编示例(前提要有arm gcc 编译出来的 .o文件):

arm-none-eabi-gdb ./build/bsp/sam/sam_demo/common/soc.o
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi".
Reading symbols from ./build/bsp/sam/sam_demo/common/soc.o...
(gdb) b reboot
Breakpoint 1 at 0x214: file /mnt/user_home/sam/rt-thread/bsp/sam/sam_demo/common/soc.c, line 36.
(gdb) disassemble reboot
Dump of assembler code for function reboot:0x00000208 <+0>:     push    {r7}0x0000020a <+2>:     sub     sp, #200x0000020c <+4>:     add     r7, sp, #00x0000020e <+6>:     mov     r3, r00x00000210 <+8>:     str     r1, [r7, #0]0x00000212 <+10>:    strb    r3, [r7, #7]0x00000214 <+12>:    ldr     r3, [pc, #24]   ; (0x230 <reboot+40>)0x00000216 <+14>:    str     r3, [r7, #12]0x00000218 <+16>:    dmb     sy0x0000021c <+20>:    ldr     r2, [pc, #20]   ; (0x234 <reboot+44>)0x0000021e <+22>:    ldr     r3, [r7, #12]0x00000220 <+24>:    str     r3, [r2, #0]0x00000222 <+26>:    nop0x00000224 <+28>:    adds    r7, #200x00000226 <+30>:    mov     sp, r70x00000228 <+32>:    ldr.w   r7, [sp], #40x0000022c <+36>:    bx      lr0x0000022e <+38>:    nop0x00000230 <+40>:    lsls    r3, r4, #120x00000232 <+42>:    movs    r0, #33 ; 0x210x00000234 <+44>:    asrs    r0, r0, #20x00000236 <+46>:    mov     r1, r0
End of assembler dump.
(gdb)

另外一种查看汇编代码的方式是使用 x 命令,如下显示 pc 开始的 3 条指令:

Breakpoint 1, foo () at test.c:19
19          printf("I am foo,I will call bar\n");
(gdb) x/3i $pc
=> 0x5555555551bd <foo+8>:      lea    0xe5f(%rip),%rax        # 0x5555555560230x5555555551c4 <foo+15>:     mov    %rax,%rdi0x5555555551c7 <foo+18>:     call   0x555555555060 <puts@plt>
(gdb)

arm gdb 反汇编示例
查看0x0地址开始后面的10条汇编:

arm-none-eabi-gdb ./build/bsp/sam/sam_demo/common/soc.o
...
(gdb) x/3i 0x00x0 <__NVIC_SetPriority>:    push    {r7}0x2 <__NVIC_SetPriority+2>:  sub     sp, #120x4 <__NVIC_SetPriority+4>:  add     r7, sp, #0
(gdb) x/10i 0x000000000x0 <__NVIC_SetPriority>:    push    {r7}0x2 <__NVIC_SetPriority+2>:  sub     sp, #120x4 <__NVIC_SetPriority+4>:  add     r7, sp, #00x6 <__NVIC_SetPriority+6>:  mov     r3, r00x8 <__NVIC_SetPriority+8>:  str     r1, [r7, #0]0xa <__NVIC_SetPriority+10>: strh    r3, [r7, #6]0xc <__NVIC_SetPriority+12>: ldrsh.w r3, [r7, #6]0x10 <__NVIC_SetPriority+16>:        cmp     r3, #00x12 <__NVIC_SetPriority+18>:        blt.n   0x2a <__NVIC_SetPriority+42>0x14 <__NVIC_SetPriority+20>:        ldr     r3, [r7, #0]
(gdb)

1.2.1 如何设置 gdb 汇编代码的格式

GDB 主要支持两种汇编代码格式:

  • AT&T风格:这是GDB的默认汇编代码格式,是在Unix和GNU系统中常见的格式。在AT&T风格的汇编代码中,操作数的顺序是“目标”,立即数绝对地址值以美元符号"$"作为前缀,寄存器名称以百分号"%"作为前缀。

  • Intel风格:这是在Intel文档和Windows环境中常见的格式。在Intel风格的汇编代码中,操作数的顺序是“目标”,立即数绝对地址没有特殊的前缀,寄存器名称也没有特殊的前缀。

可以使用 show disassembly-flavor 命令查看当前的汇编代码风格。例如:

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from test...
(gdb) dis foo
Bad breakpoint number 'foo'
(gdb) show disassembly-flavor
The disassembly flavor is "att".
(gdb)

可以看到默认是 AT&T风格。

如果你想要改变汇编代码风格,你可以使用 set disassembly-flavor 命令来设置新的风格。例如,如果你想要设置成Intel风格,你可以这样做:

(gdb) set disassembly-flavor intel

如果你想要设置成AT&T风格,你可以这样做:

(gdb) set disassembly-flavor att
http://www.yayakq.cn/news/292072/

相关文章:

  • 上海建设门户网站深圳福田有什么好玩的地方
  • 网站正在建设中html网站建设faq系统指什么
  • 国外可以用什么网站做问卷长春软件公司排名
  • 网站建设费摊销年限做网站用微软雅黑
  • wordpress全站使用cdn做词频分析的网站
  • 江西省美丽乡村建设公布网站wordpress淘宝ued
  • 网站优化注意事项网上商城网站建设设计方案
  • o2o平台网站建设欧美vpswindows另类
  • 甘肃建设厅网站官网wordpress文章404错误
  • 哈尔滨网站建设的公司网站模板有哪些
  • 婴幼儿用品网站开发意义wordpress js错误
  • 株洲网站建设制作asp.net网站
  • 现在做一个网站系统多少钱wordpress移动端页面模板
  • 网站设计师培训中心软件工程名词解释
  • 你做的网站可视区域多少中国高清vpswindows在线
  • 怎么自己开网站云主机推荐
  • 阿里云电影网站建设教程课程平台网站建设报价
  • 郑州住房和城乡建设局网站信阳做网站 汉狮网络
  • 广州 环保 凡人网站建设电销外呼软件
  • 产品销售类网站 模板电商网站建设基础ppt
  • 网站中的搜索功能怎么做网页qq邮箱怎么在手机下文件怎么打开wordpress
  • 中国建设银行招聘信息网站宽屏网站
  • 中国有没有一家做茶叶的网站博客主题Wordpress
  • 网站服务器ip地址怎么查wordpress一个域名多个主题
  • 网站架构设计师面试技巧做外贸网站如果是东西杂会不会不好推广
  • wordpress 哪些网站做阿里巴巴网站 店铺装修免费吗
  • 如何做好网站推广营销生鲜网站建设规划书
  • 没有基础怎么学网站建设个人简历简短范文
  • 有关网站建设的图片设置网站404页面
  • 营销型网站的功能wordpress文章输出函数