程式設計師的術與道:術——gdb基本操作

2020-12-08 程式設計師術與道

1.gdb是什麼

前面剛剛介紹了gcc,既然提到了gcc,下一個必須要提的是gdb。gdb同樣是GNU出品的一款功能強大的工具,橫掃linux世界

gdb是一款調試工具,其功能之強大,深入使用之後你就會有感受。同gcc一樣,隨著gdb的使用你會有一種掌控一切的感覺。因為gdb更接近於底層,和作業系統的關係是那樣近。其操作的方式是那樣原始、野蠻,換句話說,更難但是學到的東西更多。

gdb是一款調試工具,用於軟體代碼調試和跟蹤,主要是為了尋找軟體bug和測試功能。通過使用gdb調試軟體,能夠使你深入到軟體內部,進入到程序運行世界,同軟體一起執行。等你調試過幾次後,你就會對計算機順序執行的理念深入感觸。

當然在你編譯軟體的時候一定要加上-O0和-g參數,不然很多細節會被優化。

總而言之,gdb是用來調試代碼,跟蹤定位問題的。

2.gdb有什麼用

gdb是提升代碼能力最重要的工具。

gdb的作用其實就是調試代碼的作用,調試代碼對於一個軟體工程師來說至關重要。提升自己工程能力分為兩步:

閱讀源碼調試代碼閱讀源碼就像是看書,更多的是理論或者抽象邏輯層面的。但代碼要想落地,變得真實起來,或者你想對軟體有一個感性的認識就必須進行調試。無論是python、java也好,調試都是至關重要的。但那些語言和c比起來,或者說那些語言的調試工具和gdb比起來,gdb調試的c代碼更加接近底層,更加接近作業系統,更加接近真實的軟體世界。

目前的軟體世界還是構建在c上的,掌握了調試C語言代碼你才能真正了解這個軟體世界。(我是這樣想的,也是這樣做的。)正是由於C語言的特殊性以及調試代碼的重要性,才越發凸顯出gdb的重要性來。gdb在一個軟體工程師的技術晉升之路上發揮著難以替代的作用。

以下提到的操作都是gdb的基本操作,真的值得你花幾分鐘大致了解一下。然後再自己找個程序親自調試一下,哪怕是最簡單的也好。編程從來都是會了1,然後循壞百、千、萬、億。

3.gdb基本操作

基本操作使用gdb啟動調試programgdb program

添加斷點列印變量內容跟蹤程序執行流程,了解程序邏輯

調試可執行文件gdb program如果有參數使用set args arg1 arg2調試進程,調試進程要先找到進程號並且進程要包含符號表ps -ef |grep program #找到進程號gdb -q attach pid調試動態庫調試動態庫要先寫測試用例,然後就跟調試可執行文件一樣了。調試核心轉儲文件gdb coredumpfile1

以上就是gdb的基本操作,說的言簡意賅,但基本操作都涵蓋了,都是我實際的使用經驗。更多的是需要你自己去調試,因為真正有價值的是你想了解的代碼,而不是工具本身。工具會使用就好了。

相關焦點

  • 程式設計師的術與道:術——makefile基本操作
    這其中其實涉及到了每一個源文件,這些源文件基本都要經歷這樣一個過程:每一個文件都需要被gcc編譯一遍,當你的項目足夠大時,這份工作是相當龐大的。而且你把源碼換到其他地方,還需要繼續重複來一遍。這個時候makefile出場了,makefile為你解決了這些重複性的勞動。讓你一次編寫,處處運行。
  • 原型設計的道、術、器
    原型設計是網際網路PM的核心能力,其提升必然伴隨著對器的精通,術的掌握,道的理解。很多PM的原型設計能力還停留在器的層面,簡歷中號稱精通Axure和墨刀等各種原型軟體。其實只是剛剛入門罷了。術的學習古語有云:器欲盡其能,必先得其法。這裡的法就是術。說下我的土方法:多實踐,多踩坑,多總結。另外起點學院的部分線下授課挺有價值,可以嘗試。騰訊課堂也有原型設計視頻教程,也很不錯。術高於器術是可以脫離器的。換了器,術依然有效。
  • 易經和術數,道與術的關係
    在《易經·繫辭》中說:形而上者謂之道,形而下者謂之器。所謂形而上就是抽象的非具體的,無法準確描述只能意會的道,形而下謂之器,器在這裡可以理解為術,而術就是具體的的方法。易經和術數的關係,即道與術的關係,易經是理論,是道的層面,術數是教你如何運用實踐的,這是術的層面,一切的術數其根源都源於易經,有道無術是紙上談兵,有術無道是盲人摸象,以道馭術,術不會偏離方向,以術載道,道才能發揮實用的價值。有道無術,好比魂不附體,你將掌握了精髓的理論,把術放一邊了,也就沒有載體,沒法落實,難以發揮作用,也只是停留在知的層面。
  • 系統重構的道與術
    什麼是「道和術」?個人簡單的理解,道就是思想,術是方法。可謂有道無術,術尚可求也;有術無道,止於術。分別從重構的基本思路和原則,以及常見重構方案的應用來分別講講系統重構的「道與術」。一、系統重構之道現在是進行重構的恰當時機嗎?重構前需要做什麼準備?如何保障重構工作順利完成並達成預期目標?
  • 《天幕紅塵》:做成一件事都需要術與道,無道無方向,無術無實施
    《天道》解析,每晚十點,公號——煤球青年全網首發第一次在《天道》中聽到了關於術與道的討論。之前根本沒有這種思維,意識存在著可能更多的簡單的認為。人如果需要做成一件事,只要複製別人基本的客觀條件即可。骨子裡面還是更多的認為,別人能做的事情我也能做。關於什麼是道什麼又是術,更沒有一個很清晰的思路。更多的時候是把它混為一談。
  • 教育行業中的道與術有什麼關係?
    一個做教育的人首先應該明白道與術的關係,道明然後術正,有了明確的價值觀才會有方向,運用手段實現教育目標,這才是教育人應該做的事情。昨天看到大家都在討論iEnglish產品,今天就道和術的關係,我就以iEnglish做樣本,給大家展開來講一下。
  • 溫故而知新——術中輸血護理操作
    下面奉上《手術室護理實踐指南》中的術中輸血護理操作」。 一、術中輸血的目的 1.維持血容量 補給血量,維持血容量,提高血壓以抗休克和防止出血性休克。
  • 合美惠電商運營道法術思維模型之《術》
    但很多人對道的理解和追去往往停留在知其所以然的層面,對道進行駕馭、應用、改進升華等就少有涉及了。那麼,如何對道進行駕馭、應用、改進呢?答案是「術」。 那麼什麼是「術」?最近在合發全球企業總部開展的兩場規模較大的培訓會中,合發全球電商平臺合美惠某運營官的電商運營道法術思維模型回答了這個問題。 有關合發全球電商運營道法術思維模型的系列觀點,我們之前已對道與法進行闡述,本篇將講述電商運營中「術」的思想。
  • 程式設計師的術與道:術——git使用
    github和gitlab都依賴於底層的git,git提供了一系列命令或者說操作,用於代碼協作。對於這些基本操作,可以採用以下兩種方式:命令行GUI(一般是用小烏龜TortoiseGit)二、git使用的基本流程創建倉庫或者clone倉庫git init #在空目錄下初始化倉庫git clone url #根據遠程倉庫地址克隆倉庫2.添加或者閱讀readme文件主要是介紹項目是做什麼的。
  • 與雷軍周鴻禕商榷:網際網路是術還是道
    網際網路是術還是道?定位體系開創者魯建華老師在本文進行了詳盡的分析,同時本文精華版以「網際網路時代定位過時了嗎」為題,在2014年12月號《管理學家》雜誌刊發,現重新發布,希望能讓大家對網際網路時代有不一樣的理解。
  • 數據分析的「道」與「術」,建議收藏
    道 · 數據分析的價值體系道,是戰略,是形而上的價值體系。數據分析的作用及價值,可歸納總結為下面四個方面:幫助主體識別機會、規避風險幫助主體診斷問題、亡羊補牢幫助主體評估效果、改進營銷幫助主體提高效率、加強管理術
  • 菜鳥PM眼中的「道」與「術」
    本篇以一個菜鳥賽季產品經理的視角,從「道」和「術」角度展開討論。「道」即世界觀——怎麼看待產品經理的世界;「術」即方法論——怎麼做好產品經理(之我見)。這種需求聽起來很極客,但實際上幾乎沒有實操的可能,實在是為難程式設計師。
  • 周易與術數的關係
    《周易》是理,術數是方法,中國術數的理論依據是《周易》,術數的原理基本是易經的八卦與陰陽五行。如果把中華文化比喻為一棵樹的話,易經就是這棵樹的根,而術數則成為了世人眼中最耀眼的果實,它不斷汲取和運用著根的精華。
  • 天罡遁觀點:什麼是國學與術數?
    國學的基本特點是天人感應與天人合一,是中華民族文化的精髓和心理沉澱;承載著中國人的天人觀、生命觀和價值觀,以及人感應天、認識天的本體論、認識論和方法論,構成了中華傳統文明的核心學術體系;是中華文明與文化最深厚的學術體系基礎;是數萬年來中國古聖留給我們最寶貴的文明學術體系與歷史文化遺產。近年來,中國掀起一股國學熱,穿漢服、誦經典、拜孔孟,滿篇之乎者也。
  • 攝影「道與術」的關係 攝影師分析完整的脈絡
    就如:「道與術」的關係,道是思想,術是方法,道術合二為一,才是正道。過分偏重「道」的理論思想,容易空談誤了自己,成為鍵盤俠;過分偏重「術」的技巧方法,容易讓自己的照片敢於流行和平庸,少了自己的風格。攝影首先是西方攝影術的,基本理論的邏輯就是空間,結構。西方美學的基礎理論之一就是:結構。 從雕塑的人體結構,到美術的平面空間結構,這些都需要學習了解。 3、後期認知訓練,注意,後期認知訓練和審美觀察訓練,和自我了解定位都是關聯的。後期可以調整色彩和氛圍,和一個人性格,內心,喜好,對世界理解有關。而和對世界的理解,又和審美觀察,養成有關。 甚至從後期風格,你可以看出一個人的性格喜好。
  • 產業區塊鏈的「道」與「術」:區塊鏈技術的價值解讀
    我們的思維框架將從「道」、「術」、「器」從上至下逐層展開。創新的區塊鏈技術如何滿足商業本質,服務實體經濟——此為「道」,這也是事物的底層邏輯、基本的商業規律;區塊鏈技術如何與各場景結合運用,發揮價值——此為「術」,說的是做事的方法和具體的產品表現形式;通過代碼工程實施,創建一個區塊鏈技術底層架構——此為「器」,意思是通過代碼或者藉助一些工具
  • 道教法術之隱身術,古籍記載的隱身術可信嗎?
    看不見的幻術隱身術,好像所有有關玄幻的電影、小說、影視劇中都有隱身術這門法術,可以算得上是世人皆知了,記得小時候還經常想,如果自己有了隱身術可以幹一些什麼事,其實早在漢朝就有了有關隱身術的記載,在《後漢書》中寫到過,有一個叫做張楷的人,精通《尚書》,常以霧氣隱身;到了三國時期就有了張角
  • 程式設計師的術與道:術——編程基本功之進程管理
    程序是指令的集合,而進程則是程序執行的基本單元。程序運行起來成為進程,進而利用處理器資源、內存資源,進行各種I/O操作,從而完成特定任務。進程,本質意義上說, 是作業系統的調度單位,可以看成是一種作業系統 「資源」 。
  • GDB 多線程之旅
    Windows就不說了,主要有界面,打斷點,查變量等等操作簡直容易的不要不要的了!Linux下的多線程調試就比較騷氣了,由於沒有界面的「光環」加持,所以我們必須要藉助強大的輔助工具----GDB,熟練使用GDB調試程序,是一個linux程式設計師必備的技能之一;這裡我就總結和回顧一下linux環境下GDB調試多線程的一個過程~GDB 線程調試命令常用線程調試命令:
  • 企業文化落地的道與術
    讓我們跟隨歐德張,學習企業文化落地的道與術,點燃員工內心的小火苗,激發出團隊持久的戰鬥力!