最近学习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生成的结果。
然后打断点:
然后运行-启动调试
下面的四个窗口:问题/输出/调试控制台/终端中,调试的时候一般是终端,这时候我们需要进入调试控制台输入命令:
得到反汇编结果:
还可以输入

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