色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

gdb動態調試演示

麥辣雞腿堡 ? 來源:嵌入式軟件那些事 ? 作者:靜以修身 ? 2023-11-01 15:28 ? 次閱讀

今天要分享給大家的是gdb動態調試( 動態調試就是在不終止正在運行的進程的情況下,來對這個正在運行的進程進行調試,我一般習慣稱之為在線調試 )在平時開發Linux應用程序時,不管是桌面Linux應用開發,還是嵌入式Linux應用開發,在我們接到新需求開始擼代碼的時候(一般這時候都是在公司編碼測試,可以運行帶調試信息的debug版程序),都可以使用該技能進行代碼的調測,簡單實用。

為了給大家演示方便,我簡單寫了個測試程序,代碼如下:

#include < stdio.h >
#include < pthread.h >


typedef struct
{
    int a;
    char b;
    char *c;
} TEST;


int data;
TEST test;


int fun(void)
{
    printf("global variable data = %dn", data);
}


int fun2(int val)
{
    data = val;
    printf("set global variable data = %dn", data);
}


void *thread()
{
    while(1)
    {
        //printf("thread is runningn");
        sleep(1);
    }
}


int main(int argc, char *argv[])
{
    pthread_t tid;


    data = 100;

    test.a = 10;
    test.b = 'a';
    test.c = "hello world";


    pthread_create(&tid, NULL, thread, NULL);

    pause();


    return 1;
}

為了不讓程序自動結束,我創建了一個線程,然后使用如下命令進行編譯,生成帶調試信息的可執行程序文件。

gcc -g -o main main.c -lpthread

使用&符號,讓程序在后臺運行,記下程序的進程號PID(或者使用ps -e | grep main命令查詢):

圖片

gdb動態調試有多種使用方式,感興趣的小伙伴可以直接找度娘搜索下,下面是最常用的一種方式:

gdb < 可執行程序名 > < 進程ID >


比如:gdb < 可執行程序名 > 1234


這條命令會把進程ID為1234的進程與gdb聯系起來,也就是說,這條命令會把進程ID為1234的進程的地址空間附著在gdb的地址空間中,然后使這個進程在gdb的環境下運行,這樣的話,gdb就可以清楚地了解該進程的執行情況、函數堆棧、內存使用情況等等。

從上面我們查到main進程的PID為21310,直接執行gdb main 21310即可開啟main進程的動態調試。

圖片

這時候我們借助強大的gdb可以做的事情就非常多了:

  • 查看某個全局變量的值(gdb的print命令顯示結構體變量是非常的nice)
  • 修改某個全局變量的值(也可以單獨修改結構體變量的某個成員)
  • 直接執行某個函數(無參函數、有參函數都可以)
  • 設置斷點
  • ......
    以上這些常用的功能基本可以滿足我們的調試需求,使用效果如下:

圖片

編譯x86電腦上用的gdb

cd /home/tools/gdb/gdb-8.2
mkdir build
cd build
../configure --prefix=/home/tools/gdb/gdb_install_x86/
make && make install

編譯arm終端上用的gdb(需要交叉編譯,交叉編譯工具鏈換成對應的即可)

cd /home/tools/gdb/gdb-8.2
mkdir build
cd build
../configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CPP=arm-linux-gnueabihf-cpp CXX=arm-linux-gnueabihf-g++ --prefix=/home/tools/gdb/gdb_install_arm/
make && make install

另外,如果感覺生成的gdb可執行程序文件比較大(默認是帶著調試信息的),可以用strip命令裁剪下即可,不影響使用!

好了,今天就先寫到這吧,gdb動態調試在不打斷程序運行的情況下,進行在線調測還是很有用的,一般在排查問題、動態改變程序執行邏輯、單元/集成測試等都可以使用,用起來非常的香!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5103

    文章

    19268

    瀏覽量

    310026
  • Linux
    +關注

    關注

    87

    文章

    11373

    瀏覽量

    211297
  • 程序
    +關注

    關注

    117

    文章

    3806

    瀏覽量

    81710
  • 代碼
    +關注

    關注

    30

    文章

    4857

    瀏覽量

    69527
收藏 人收藏

    評論

    相關推薦

    QEMU+GDB調試ARM程序

    通過GDB調試代碼的便利性無需贅言。我們直接以調試meta-hypervisor為示例進行說明。
    的頭像 發表于 10-08 09:17 ?3089次閱讀

    使用GDB調試Linux應用程序

    本篇講解使用GDB調試Linux應用程序,以下以 `hellowld.c` 為例介紹 GDB調試入門。
    發表于 06-27 15:48 ?511次閱讀

    ARM平臺如何玩轉GDB遠程調試

    搭建正常,執行如下命令可查看交叉編譯工具版本。Host# aarch64-poky-linux-gcc -v圖 22 演示程序創建與編譯執行如下命令,新建一個GDB調試演示程序。Host# mkdir
    發表于 09-27 15:28

    GDB調試命令手冊

    GDB調試命令手冊,感興趣的可以下載看看。
    發表于 11-05 16:36 ?9次下載

    gdb調試器解析

    3.4 gdb調試調試是所有程序員都會面臨的問題。如何提高程序員的調試效率,更好、更快地定位程序中的問題從而加快程序開發的進度,是大家都很關注的問題。就如讀者熟知的Windows下
    發表于 10-18 13:49 ?1次下載

    Linux應用的GDB調試的原理及過程分析

    GDB調試是應用程序在開發板上運行,然后在PC機上對開發板上得應用程序進行調試,PC機運行GDB,開發板上運行GDBServer。在應用程序調試
    發表于 03-05 09:44 ?3504次閱讀
    Linux應用的<b class='flag-5'>GDB</b><b class='flag-5'>調試</b>的原理及過程分析

    linux編程GDB調試功能

    GDB是一套字符界面的程序集,可以用它在linux上調試C和C++程序,它提供了以下的功能:
    的頭像 發表于 05-05 23:49 ?2362次閱讀
    linux編程<b class='flag-5'>GDB</b><b class='flag-5'>調試</b>功能

    實例演示GDB的使用

    GDB簡介 GDB(GNU Debugger)是一個強大的命令行調試工具。一般的,在Windows下進行開發,很少操控命令行調試調試器大多
    的頭像 發表于 10-19 09:58 ?2845次閱讀
    實例<b class='flag-5'>演示</b><b class='flag-5'>GDB</b>的使用

    OpenHarmony系統使用gdb調試init

    。如果能使用gdb調試init,會極大的提高定位效率。 本文簡單描述了一下L2二次啟動的系統如何使用gdb調試init 首先將gdb打包到系
    的頭像 發表于 12-26 12:10 ?1016次閱讀

    ARM平臺如何玩轉GDB遠程調試

    前言關于GDB工具GDB工具是GNU項目調試器,基于命令行使用。和其他的調試器一樣,可使用GDB工具單步運行程序、單步執行、跳入/跳出函數、
    的頭像 發表于 09-28 18:17 ?1082次閱讀
    ARM平臺如何玩轉<b class='flag-5'>GDB</b>遠程<b class='flag-5'>調試</b>?

    在ubuntu中調試GDB

    的 gcc 編譯器即可,注意需要加 -g 選項,才能使用 gdb 調試 arm-linux-gnueabihf-gcc gdbtest .c -o gdbtest -g //編譯測試程序,注意-g 選項
    的頭像 發表于 07-27 16:31 ?1241次閱讀
    在ubuntu中<b class='flag-5'>調試</b><b class='flag-5'>GDB</b>

    GDB調試里怎么設置斷點

    本篇講解使用GDB調試Linux應用程序,以下以 hellowld.c 為例介紹 GDB調試入門: 設置斷點 ??disable?????????????????#?禁用所有斷點
    的頭像 發表于 10-04 16:10 ?1337次閱讀

    GDB調試工具的原理

    一、GDB調試工具的原理 1.1 未執行進程調試 啟用gdb調試運行gdb ./test的時候,
    的頭像 發表于 11-09 17:04 ?1055次閱讀
    <b class='flag-5'>GDB</b><b class='flag-5'>調試</b>工具的原理

    如何使用GDB調試工具

    在對應程序目錄中使用下面的命令 gdb test 2、調試已經開始運行的程序進程 調試已經開始運行的程序進程,首先先用top命令查看運行的程序進程的pid如下: 比如我要加載的程序
    的頭像 發表于 11-09 17:17 ?961次閱讀
    如何使用<b class='flag-5'>GDB</b><b class='flag-5'>調試</b>工具

    如何使用linux下gdb調試python程序

    如何使用linux下gdb調試python程序? 在Linux下,可以使用GDB(GNU調試器)來調試Python程序。
    的頭像 發表于 01-31 10:41 ?2876次閱讀
    主站蜘蛛池模板: 99re久久热在线播放8 | 免费小视频在线观看 | 国产在线中文字幕 | 日日射夜夜干夜夜插在线播放 | 亚洲一区二区免费看 | JAVASCRIPTJAVA水多多 | 无颜之月全集免费观看 | 51精品国产AV无码久久久 | 三级黄色在线视频 | 国产精品成人影院 | 大胸美女脱内衣黄网站 | 三级叫床震大尺度视频 | 午夜DJ国产精华日本无码 | 攵女yin乱合集高h | 永久精品视频无码一区 | 婷婷亚洲AV色香蕉蜜桃 | 国产成人刺激视频在线观看 | 99热这里只有精品88 | 青草久久影院 | 我的奶头被客人吸的又肿又红 | 国产精品婷婷五月久久久久 | 二级毛片免费观看全程 | 美女视频黄a视频全免费网站色窝 | 亚洲H成年动漫在线观看不卡 | 国产精品婷婷久青青原 | 亚洲欧美日本中文子不卡 | 成人国产精品玖玖热色欲 | 最美白嫩的极品美女ASSPICS | 91国在线产| 亚洲国产黄色 | 久久天堂视频 | 韩国污动漫无遮掩无删减电脑版 | 一本道色综合手机久久 | 免费看黄的片多多APP下载 | FREEHDXXXX学生妹| 99热热在线精品久久 | 99精品99| 青草伊人网 | 被室友C哭调教双性 | 亚洲免费高清视频 | 成年人视频免费在线观看 |