最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

gdb調(diào)試的簡(jiǎn)單操作總結(jié)

 更新時(shí)間:2023年08月07日 09:34:36   作者:yi_fan0305  
gdb是一個(gè)命令行下的、功能強(qiáng)大的調(diào)試器,這篇文章主要為大家詳細(xì)介紹了gdb?調(diào)試的一些簡(jiǎn)單操作,感興趣的小伙伴可以跟隨小編一起了解一下

gdb是一個(gè)命令行下的、功能強(qiáng)大的調(diào)試器。

在學(xué)習(xí) gdb 前,我們要知道幾個(gè)最基本的 cmd 命令。

cmd

首先,對(duì)于 win10 系統(tǒng),我們按 Windows + R 鍵,打開運(yùn)行窗口,在里面輸入 cmd,這樣就可以打開 cmd 命令窗口了,是一個(gè)黑框。

接下來(lái)是一些最基本的命令。

F: 打開 F 盤;E: 打開 E 盤,等等

dir 查看文件夾中的文件

cd XXX.XXX 打開 XXX.XXX 文件

cd.. 返回上一級(jí)(文件夾)

cls 清屏(如果你覺得屏幕中的信息太多的話可以用這個(gè)命令)

ping [網(wǎng)址] 查看一個(gè)網(wǎng)站的信息(中括號(hào)不用打)

gdb 調(diào)試前的操作

在進(jìn)行 gdb 調(diào)試之前,請(qǐng)先確保你安裝了 gdb、g++、gcc 等。

首先,在 cmd 中進(jìn)入到你的代碼的文件夾頁(yè)面,我的代碼在 F 盤,如下圖。

現(xiàn)在,我只要進(jìn)入這個(gè)地址就行了。

要進(jìn)行調(diào)試的文件是 ceshi.cpp,我們先在 cmd 中輸入 g++ -g ceshi.cpp -o ceshi.exe 命令,然后等待一會(huì),文件夾中就會(huì)出現(xiàn)一個(gè)名為 ceshi.exe 的文件。

之后輸入 gdb 命令,會(huì)變成這樣。

現(xiàn)在,我們用 file 命令來(lái)將剛才生成的 .exe 文件載入 gdb 調(diào)試器中,輸入 file ceshi.exe(這里的 ceshi.exe 是剛才生成的 .exe 文件,你也可以起別的名字),如果出現(xiàn)下面的情況,就說(shuō)明你成功了。

現(xiàn)在,我們就可以對(duì)這份代碼進(jìn)行調(diào)試了。

調(diào)試

這是 ceshi.cpp 里面的代碼。

//The code was written by yifan, and yifan is neutral!!!
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define bug puts("NOIP rp ++!");
template<typename T>
inline T read() {
    T x = 0;
    bool fg = 0;
    char ch = getchar();
    while (ch < '0' || ch > '9') {
        fg |= (ch == '-');
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        x = (x << 3) + (x << 1) + (ch ^ 48);
        ch = getchar();
    }
    return fg ? ~x + 1 : x;
}
int a[10];
vector<int> s;
void bre() {
    int n = 10;
    while (n --) {
        puts("qwq");
    }
}
int main() {
    int n = read<int>(), m = read<int>();
    for (int i = 1; i <= 8; ++ i) {
        a[i] = i;
        s.emplace_back(i);
    }
    puts("AK IOI!");
    bre();
    puts("end!");
    return 0;
}

我們要學(xué)會(huì)一些基礎(chǔ)的命令。

r 運(yùn)行代碼,也就是我們平時(shí)的運(yùn)行,你輸入數(shù)據(jù),它進(jìn)行操作,最后輸出。

l 查看代碼,l [數(shù)字] 查看第幾行附近的代碼(取決于你輸入的數(shù)字)

b [數(shù)字或函數(shù)名] 在第幾行設(shè)置斷點(diǎn)或者在函數(shù)處設(shè)置斷點(diǎn),代碼運(yùn)行到這一行時(shí)就會(huì)停下,函數(shù)名要帶小括號(hào),例如 main 函數(shù)就是 main()

c 從斷點(diǎn)處繼續(xù)運(yùn)行至下一斷點(diǎn)處或者程序結(jié)束處。

p [變量、數(shù)組名或者 STL 容器名] 查看變量、數(shù)組或者 STL 容器中的元素,如果數(shù)組或者 STL 中的元素過(guò)多,則只會(huì)顯示大小。

d 斷點(diǎn)編號(hào) 刪除斷點(diǎn),i b 查看所有斷點(diǎn)。

watch [變量或數(shù)組] 觀測(cè)某個(gè)變量或數(shù)組,當(dāng)這個(gè)變量或者數(shù)組中的元素出現(xiàn)變化時(shí),程序就暫停,并給你顯示變化,在程序運(yùn)行后才可以使用。

(gdb) r // 運(yùn)行
Starting program: F:\\8.7\ceshi.exe
[New Thread 10196.0x1b74]
[New Thread 10196.0x173c]
[New Thread 10196.0xe84]
Thread 1 hit Breakpoint 1, main () at ceshi.cpp:36
36          n = read<int>(), m = read<int>(); // 碰到斷點(diǎn)
(gdb) watch n // 添加監(jiān)測(cè)變量 n
Hardware watchpoint 2: n
(gdb) c // 繼續(xù)運(yùn)行
Continuing.
2 3
Thread 1 hit Hardware watchpoint 2: n // n 的變化
Old value = 0
New value = 2
main () at ceshi.cpp:36
36          n = read<int>(), m = read<int>();
(gdb) watch a // 添加監(jiān)測(cè)數(shù)組 a
Watchpoint 3: a
(gdb) c
Continuing.
Watchpoint 2 deleted because the program has left the block
in which its expression is valid.
Thread 1 hit Watchpoint 3: a // a 的變化
Old value = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
New value = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0}
main () at ceshi.cpp:39
39              s.emplace_back(i);
(gdb) c
Continuing.
Thread 1 hit Watchpoint 3: a
Old value = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0}
New value = {0, 1, 2, 0, 0, 0, 0, 0, 0, 0}
main () at ceshi.cpp:39
39              s.emplace_back(i);
(gdb) c
Continuing.
Thread 1 hit Watchpoint 3: a
Old value = {0, 1, 2, 0, 0, 0, 0, 0, 0, 0}
New value = {0, 1, 2, 3, 0, 0, 0, 0, 0, 0}
main () at ceshi.cpp:39
39              s.emplace_back(i);
(gdb) c
Continuing.
Thread 1 hit Watchpoint 3: a
Old value = {0, 1, 2, 3, 0, 0, 0, 0, 0, 0}
New value = {0, 1, 2, 3, 4, 0, 0, 0, 0, 0}
main () at ceshi.cpp:39
39              s.emplace_back(i);
(gdb) c
Continuing.
Thread 1 hit Watchpoint 3: a
Old value = {0, 1, 2, 3, 4, 0, 0, 0, 0, 0}
New value = {0, 1, 2, 3, 4, 5, 0, 0, 0, 0}
main () at ceshi.cpp:39
39              s.emplace_back(i);
(gdb) c
Continuing.
Thread 1 hit Watchpoint 3: a
Old value = {0, 1, 2, 3, 4, 5, 0, 0, 0, 0}
New value = {0, 1, 2, 3, 4, 5, 6, 0, 0, 0}
main () at ceshi.cpp:39
39              s.emplace_back(i);
(gdb) c
Continuing.
Thread 1 hit Watchpoint 3: a
Old value = {0, 1, 2, 3, 4, 5, 6, 0, 0, 0}
New value = {0, 1, 2, 3, 4, 5, 6, 7, 0, 0}
main () at ceshi.cpp:39
39              s.emplace_back(i);
(gdb) c
Continuing.
Thread 1 hit Watchpoint 3: a
Old value = {0, 1, 2, 3, 4, 5, 6, 7, 0, 0}
New value = {0, 1, 2, 3, 4, 5, 6, 7, 8, 0}
main () at ceshi.cpp:39
39              s.emplace_back(i);
(gdb) c
Continuing.
AK IOI!
qwq
qwq
qwq
qwq
qwq
qwq
qwq
qwq
qwq
qwq
end!
[Thread 10196.0xe84 exited with code 0]
[Thread 10196.0x173c exited with code 0]
[Thread 10196.0x1b74 exited with code 0]
[Inferior 1 (process 10196) exited normally]
(gdb)
  • info watch 查看所有監(jiān)測(cè)。
  • info locals 顯示局部變量。
  • info f 顯示當(dāng)前棧的情況。
  • finish 完成函數(shù)。
  • call [函數(shù)名] 調(diào)用子函數(shù)。
  • n 從斷點(diǎn)處開始,下一行,不進(jìn)入子函數(shù)。
  • s 從斷點(diǎn)處開始,下一行,進(jìn)入子函數(shù)(包括快讀、STL 的輸入函數(shù)等等)。
  • return 忽略程序未完成的語(yǔ)句,強(qiáng)行返回。
  • whatis [變量名] 返回變量的數(shù)據(jù)類型。
  • set var [變量 = 數(shù)值] 強(qiáng)行給變量賦值。
  • q 退出。

到此這篇關(guān)于gdb調(diào)試的簡(jiǎn)單操作總結(jié)的文章就介紹到這了,更多相關(guān)gdb調(diào)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ 17轉(zhuǎn)發(fā)一個(gè)函數(shù)調(diào)用的完美實(shí)現(xiàn)

    C++ 17轉(zhuǎn)發(fā)一個(gè)函數(shù)調(diào)用的完美實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于C++ 17如何轉(zhuǎn)發(fā)一個(gè)函數(shù)調(diào)用的完美實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++17具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • C語(yǔ)言實(shí)現(xiàn)通訊錄

    C語(yǔ)言實(shí)現(xiàn)通訊錄

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 引用numpy出錯(cuò)詳解及解決方法

    引用numpy出錯(cuò)詳解及解決方法

    這篇文章主要介紹了引用numpy出錯(cuò) 解決方法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • C/C++舉例講解關(guān)鍵字的用法

    C/C++舉例講解關(guān)鍵字的用法

    相對(duì)于其他語(yǔ)言來(lái)說(shuō),C語(yǔ)言的關(guān)鍵字算是少的了。在C98中關(guān)鍵子總共只有32個(gè),我們來(lái)分析一下部分關(guān)鍵字在C/C++中它獨(dú)特的作用
    2022-05-05
  • c語(yǔ)言中全局變量的設(shè)置方式

    c語(yǔ)言中全局變量的設(shè)置方式

    這篇文章主要介紹了c語(yǔ)言中全局變量的設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • C++17 使用 std::string_view避免字符串拷貝優(yōu)化程序性能

    C++17 使用 std::string_view避免字符串拷貝優(yōu)化程序性能

    這篇文章主要介紹了C++17 使用 std::string_view避免字符串拷貝優(yōu)化程序性能,幫助大家提高程序運(yùn)行速度,感興趣的朋友可以了解下
    2020-10-10
  • C語(yǔ)言中數(shù)組排序淺析

    C語(yǔ)言中數(shù)組排序淺析

    這篇文章主要為大家介紹了C語(yǔ)言算法練習(xí)中數(shù)組元素排序的四種類型,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定幫助,需要的可以參考一下
    2022-12-12
  • C語(yǔ)言實(shí)現(xiàn)圖片放大縮小

    C語(yǔ)言實(shí)現(xiàn)圖片放大縮小

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)圖片放大縮小,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++異常處理入門(try和catch)

    C++異常處理入門(try和catch)

    C++ 提供了異常機(jī)制,讓我們能夠捕獲運(yùn)行時(shí)錯(cuò)誤,本文就詳細(xì)的介紹了C++異常處理入門,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++中關(guān)于set刪除的一些坑

    C++中關(guān)于set刪除的一些坑

    這篇文章主要介紹了C++中關(guān)于set刪除的一些坑,因?yàn)檫@個(gè)問(wèn)題浪費(fèi)了很多的時(shí)間,所以想著分享出來(lái)給大家,方便同樣遇到這個(gè)問(wèn)題的朋友們,有需要的朋友們下面來(lái)一起看看吧。
    2017-02-02

最新評(píng)論

杭锦后旗| 荆门市| 兖州市| 班戈县| 建瓯市| 高雄县| 白朗县| 龙南县| 额敏县| 正安县| 丰台区| 甘谷县| 比如县| 卓尼县| 衡水市| 读书| 扶风县| 新巴尔虎左旗| 闽侯县| 台前县| 布尔津县| 肥西县| 洞口县| 天门市| 鄄城县| 山西省| 靖江市| 北辰区| 莱阳市| 泽普县| 兰考县| 江华| 如皋市| 双峰县| 巢湖市| 伊川县| 龙陵县| 固安县| 怀宁县| 汨罗市| 江口县|