日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下使用gdb调试崩溃和死锁实例

發布時間:2025/3/21 linux 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下使用gdb调试崩溃和死锁实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

gdb是linux下一款功能強大的調試工具,windows下對應的有windbg,下面舉例說明常見程序錯誤解決方法

1.gdb啟動

要想使用gdb調試,編譯時指定-g選項加入調試信息,gdb可以啟動執行文件,attach正在運行程序,調試程序崩潰產生core文件

啟動gdb后輸入run運行,continue繼續,quiet退出,下面是調試一段崩潰和死鎖的源碼

?

#include <pthread.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <string.h> pthread_mutex_t mutex; int count = 0; void print_pid_tid() { pid_t pid; pthread_t tid; pid = getpid(); tid = pthread_self(); printf("pid %u tid %u (0x%x)\n", (unsigned int)pid, (unsigned int)tid, (unsigned int)tid); } void callback_func() {pthread_mutex_lock(&mutex); printf("count:%d\n",count); }void *thread_func1(void *arg) { while (1){int n = *((int *)arg);pthread_mutex_lock(&mutex); print_pid_tid(); count += 2;for (int i=0 ; i < 5; ++i ) {count += n;} callback_func();pthread_mutex_unlock(&mutex); sleep(1);}return 0; } void *thread_func2(void *arg) {while (1){pthread_mutex_lock(&mutex); printf("thread_func2 run\n");pthread_mutex_unlock(&mutex); sleep(1);}return 0; } void *thread_func3(void *arg) {while(1){char *str = NULL;//strcpy(str,"hello world");sleep(1);}return 0; }int main(void) { pthread_t ntid; int count = 10; pthread_mutex_init(&mutex, NULL); int err = pthread_create(&ntid, NULL, thread_func1, &count); if ( 0 != err ) { printf("pthread_create1:%s\n", strerror(err)); } err = pthread_create(&ntid, NULL, thread_func2, &count); if ( 0 != err ) { printf("pthread_create2:%s\n", strerror(err)); }err = pthread_create(&ntid, NULL, thread_func3, &count); if ( 0 != err ) { printf("pthread_create3:%s\n", strerror(err)); }getchar();int **ret = NULL; pthread_join(ntid, (void**)ret); printf("pthread_join:%p\n", *ret); pthread_mutex_destroy(&mutex); return 0; }


2.調試崩潰

?

gdb綁定程序運行崩潰時,gdb會停留在程序最后運行棧位置,一般輸入bt查看堆棧,frame n切換棧幀,print打印是否空指針導致崩潰,where查看對于源碼位置或者list列出源代碼,崩潰一般有空指針,數組越界,內存非法訪問

3.調試死鎖

程序出現死鎖時會是卡死狀態,如果gdb綁定運行使用ctrl+c中斷程序,輸入info threads查看所有線程,使用thread n切換線程,在線程中輸入bt查看線程堆棧,定位程序停留位置,一般比較多個線程鎖或者是否有死循環



4.斷點調試

設置斷點,如b main.cpp:31,執行到斷點后next單步,step進入函數,continue繼續運行

總結

以上是生活随笔為你收集整理的linux下使用gdb调试崩溃和死锁实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲男女av | 免费观看的av网站 | 久久久久久中文字幕 | 超碰按摩 | 97超碰在线免费观看 | 亚洲av无码一区二区三区人 | 丁香激情小说 | 国产人妻人伦精品1国产丝袜 | 精品少妇久久久 | 日本黄色a级片 | 天天av天天干 | 手机av网站 | 亚洲制服丝袜诱惑 | 日韩久久毛片 | 日本理论片午伦夜理片在线观看 | 欧美va天堂 | 图片区偷拍区小说区 | 欧美一级黄色录像 | 怡红院av在线 | 麻豆国产一区二区三区 | 99精品视频免费 | 国产第一页在线 | 亚洲精品中文字幕在线播放 | 亚洲偷自| 午夜av毛片 | 琪琪色综合网 | 麻豆av免费观看 | 一女双乳被两男吸视频 | 亚洲精选一区二区三区 | 日韩在线视频看看 | 午夜刺激视频 | 超碰人人人人人人人 | 美女擦边视频 | 波多野结衣精品在线 | 精品国产一区二区三区久久久久久 | 免费一区二区视频 | 人人干人 | 污视频网址在线观看 | 国产99在线观看 | 新av在线 | 中文字幕导航 | 蜜桃成人免费视频 | 天天色综合天天 | 亚洲污污视频 | 亚洲一片 | 国产一区二区播放 | 一级黄色片一级黄色片 | 一级特黄录像免费看 | 国产第1页| 国产精品一区二区三区免费 | 日韩在线第二页 | 在线一二三区 | 国产免费视频 | 欧美日韩免费高清一区色橹橹 | 国产精品无码粉嫩小泬 | 79日本xxxxxxxxx18 婷婷亚洲一区 | 成人看片黄a免费看视频 | 色丁香综合 | 亚洲黄色三级 | 国产麻豆一精品一av一免费 | 天天av天天| 一区视频在线播放 | 国产一毛片 | 伊人99re | 一区二区三区在线观看视频 | 中文字幕www | 高跟肉丝丝袜呻吟啪啪网站av | 欧美黑大粗 | 亚洲少妇视频 | 少妇黄色片| 国产在线综合视频 | www.色播| 日韩黄色免费视频 | 国产精品成人午夜视频 | 日本午夜激情 | 永久免费成人代码 | 日本韩国视频 | 九月婷婷| 国产精品午夜福利视频234区 | 97在线观看视频 | 亚洲精品少妇久久久久久 | 国产女主播喷水高潮网红在线 | 亚洲精品一区二区三区四区 | 伊人成人在线 | 黄色午夜网站 | 欧美日韩亚洲精品内裤 | 国产美女福利 | 夜夜爽日日澡人人添 | 国产最新自拍视频 | 日韩精品一区二区三区不卡 | 一区二区视频在线观看免费 | 51精品国自产在线 | 床戏高潮做进去大尺度视频 | 少妇粉嫩小泬喷水视频www | www黄色av| 嫩草影院菊竹影院 | 少妇高潮大叫好爽喷水 | 九热这里只有精品 | 综合色综合|