VScode c++的反汇编


最近学习c++的时候用VS调用反汇编感觉学习效率和理解能力飞速提升,而且对于自己理解代码底层原理和运行逻辑有很大帮助。

于是在想能不能用VScode看到c的反汇编代码。

(最开始用的devc++可是出现了一直无法解决的win10中文乱码问题,然后在网上看到VScode改一些task.json和launch.json的东西就可以解决,才把devc++卸载转战VScode)

(然后VScode写c++和c的时候苦于不能看到反汇编,上网查找发现VS可以看于是去下载VS调试看反汇编,可是VS有不太能运行c,于是绞尽脑汁找VScode查看反汇编的方法)

终于皇天不负有心人,在浏览贴吧帖子https://tieba.baidu.com/p/6497009192的时候给到启发,去看了CSDN的文章

https://blog.csdn.net/JCMLSY/article/details/114319998

但是不知道在哪里输入它的代码,于是又回贴吧看图突然恍然大悟,下面把具体流程和常见代码说一下。

首先我用的是这段代码(anyway,不用管)

#include <stdio.h>
#include <stdlib.h>

typedef struct  Person
{
    char name[64];
    int age;
    /* data */
}Person;

typedef struct Animal
{
    char name[64];
    int age;
    int type;
    /* data */
}Animal;

void PersonEat(Person* person){
    printf("%s在吃人吃的饭!\n", person->name);
}

void AnimalEat(Animal* animal){
    printf("%s在吃动物吃的饭!\n", animal->name);
}

int main(){
    Person person;
    strcpy(person.name, "小明");
    person.age = 30;
    AnimalEat(&person);

    system("pause");
    return 0;
}

国际惯例,gcc.exe运行生成任务文件,(我这段用g++会生成错误信息,可能无法进入调试阶段,因为就是c++无法运行但是c可以运行的:))

 

 这是g++.exe的运行结果。

 

 这是gcc.exe生成的结果。

然后打断点:

 

 然后运行-启动调试

 

下面的四个窗口:问题/输出/调试控制台/终端中,调试的时候一般是终端,这时候我们需要进入调试控制台输入命令:

-exec disassemble /m
或者
-exec disassemble /m main

 

 得到反汇编结果:

 

 还可以输入

-exec info registers
得到寄存器的信息:

 

 总之就是CSDN老哥的命令在调试控制台运行就可以了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM