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