gdb常用命令


[root@redhat home]#gdb 調試文件:啟動gdb

(gdb) l :(字母l)從第一行開始列出源碼

(gdb) break n :在第n行處設置斷點

(gdb) break func:在函數func()的入口處設置斷點

(gdb) info break:?查看斷點信息

(gdb) r:運行程序

(gdb) n:單步執行

(gdb) c:繼續運行

(gdb) p 變量 :打印變量的值

(gdb) bt:查看函數堆棧

(gdb) finish:退出函數

(gdb) shell 命令行:執行shell命令行

(gdb) set args 參數:指定運行時的參數

(gdb) show args:查看設置好的參數

(gdb) show paths:查看程序運行路徑;

set environment varname [=value]?設置環境變量。如:set env USER=hchen;

show environment [varname] 查看環境變量;

(gdb) cd 相當于shell的cd;

(gdb)pwd :顯示當前所在目錄

(gdb)info program: 來查看程序的是否在運行,進程號,被暫停的原因。

(gdb)clear 行號n:清除第n行的斷點

(gdb)delete 斷點號n:刪除第n個斷點

(gdb)disable 斷點號n:暫停第n個斷點

(gdb)enable 斷點號n:開啟第n個斷點

(gdb)step:單步調試如果有函數調用,則進入函數;與命令n不同,n是不進入調用的函數的

  • list :簡記為 l ,其作用就是列出程序的源代碼,默認每次顯示10行。
  • list 行號:將顯示當前文件以“行號”為中心的前后10行代碼,如:list 12
  • list 函數名:將顯示“函數名”所在函數的源代碼,如:list main
  • list :不帶參數,將接著上一次 list 命令的,輸出下邊的內容。
注意 :如果運行list 命令得到類似如下的打印,那是因為在編譯程序時沒有加入 -g 選項:
(gdb) list
1?????? ../sysdeps/i386/elf/start.S: No such file or directory.
in ../sysdeps/i386/elf/start.S
  • run:簡記為 r ,其作用是運行程序,當遇到斷點后,程序會在斷點處停止運行,等待用戶輸入下一步的命令。
  • 回車:重復上一條命令。
  • set args:設置運行程序時的命令行參數,如:set args 33 55
  • show args:顯示命令行參數
  • continue:簡訊為 c ,其作用是繼續運行被斷點中斷的程序。
  • break:為程序設置斷點。
  • break 行號:在當前文件的“行號”處設置斷點,如:break? 33
  • break 函數名:在用戶定義的函數“函數名”處設置斷點,如:break cb_button
  • info breakpoints:顯示當前程序的斷點設置情況
  • disable breakpoints Num:關閉斷點“Num”,使其無效,其中“Num”為 info breakpoints 中顯示的對應值
  • enable breakpoints Num:打開斷點“Num”,使其重新生效
  • step:簡記為 s ,單步跟蹤程序,當遇到函數調用時,則進入此函數體(一般只進入用戶自定義函數)。
  • next:簡記為 n,單步跟蹤程序,當遇到函數調用時,也不進入此函數體;此命令同 step 的主要區別是,step 遇到用戶自定義的函數,將步進到函數中去運行,而 next 則直接調用函數,不會進入到函數體內。
  • until:當你厭倦了在一個循環體內單步跟蹤時,這個命令可以運行程序直到退出循環體。
  • finish: 運行程序,直到當前函數完成返回,并打印函數返回時的堆棧地址和返回值及參數值等信息。
  • stepi或nexti:單步跟蹤一些機器指令。
  • print 表達式:簡記為 p ,其中“表達式”可以是任何當前正在被測試程序的有效表達式,比如當前正在調試C語言的程序,那么“表達式”可以是任何C語言的有效表達式,包括數字,變量甚至是函數調用。
  • print a:將顯示整數 a 的值
  • print ++a:將把 a 中的值加1,并顯示出來
  • print name:將顯示字符串 name 的值
  • print gdb_test(22):將以整數22作為參數調用 gdb_test() 函數
  • print gdb_test(a):將以變量 a 作為參數調用 gdb_test() 函數
  • bt:顯示當前程序的函數調用堆棧。
  • display 表達式:在單步運行時將非常有用,使用display命令設置一個表達式后,它將在每次單步進行指令后,緊接著輸出被設置的表達式及值。如: display a
  • watch 表達式:設置一個監視點,一旦被監視的“表達式”的值改變,gdb將強行終止正在被調試的程序。如: watch a
  • kill:將強行終止當前正在調試的程序
  • help 命令:help 命令將顯示“命令”的常用幫助信息
  • call 函數(參數):調用“函數”,并傳遞“參數”,如:call? gdb_test(55)
  • layout:用于分割窗口,可以一邊查看代碼,一邊測試:
  • layout src:顯示源代碼窗口
  • layout asm:顯示反匯編窗口
  • layout regs:顯示源代碼/反匯編和CPU寄存器窗口
  • layout split:顯示源代碼和反匯編窗口
  • Ctrl + L:刷新窗口
  • quit:簡記為 q ,退出gdb

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449475.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449475.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449475.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

有前途的人工智能大數據分析相關職業:Python數據科學入門之路

2019獨角獸企業重金招聘Python工程師標準>>> 為什么學習Python數據科學? Python是數據科學職業所需的寶貴技能之一。Python是數據科學的首選編程語言。 2016年,它超越了R on Kaggle,這是數據科學競賽的首選平臺。2017年&#xff0…

遍歷Map key-value的兩種方法、遍歷Set方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 第一種遍歷方法 : 先獲取Map中的所有key值&#xff0c;然后根據key&#xff0c;依次從Map中去數據 Map<String,String> test…

STL 容器簡介:C++ 容器:順序性容器、關聯式容器和容器適配器

STL標準容器類簡介 標準容器類說明順序性容器vector從后面快速的插入與刪除&#xff0c;直接訪問任何元素deque從前面或后面快速的插入與刪除&#xff0c;直接訪問任何元素list雙鏈表&#xff0c;從任何地方快速插入與刪除關聯容器set快速查找&#xff0c;不允許重復值multise…

用友云開發者中心助你上云系列之在線調試

現在&#xff0c;大家開始越來越多的談論到高可用架構的互聯網應用。什么是高可用&#xff1f;高可用HA&#xff08;High Availability&#xff09;是分布式系統架構設計中必須考慮的因素之一&#xff0c;它通常是指&#xff0c;通過設計減少系統不能提供服務的時間。當我們談論…

python根據財務指標尋找價值股票

確定股票池 from concurrent.futures import ThreadPoolExecutor import urllib import os from time import sleep import pandas as pd # 上證代碼 shanghaicode [] for i in range(600000, 606000, 1):shanghaicode.append(str(i))# 深證代碼 shenzhencode [] for i in r…

WPF Bitmap轉BitmapSource,Image

//引用&#xff1a;using System.Windows.Interop; //Imagingusing System.Drawing; //Bitmap public static Imaging.BitmapSource ConvertToBitmapSource(Bitmap btmap) { return Imaging.CreateBitmapSourceFromHBitmap(btmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empt…

解決jboss.resteasy.spi.UnhandledException: Response is committed, can‘t handle exception

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如題&#xff0c;如圖&#xff1a; 我的情況是&#xff1a;項目作壓測&#xff0c;這個接口請求量不大時是OK的 &#xff0c;當達到…

linux下如何做ghost,又簡單又方便,很實用的方法!!!

Linux 做ghost 使用指南。 轉載時請注明本博客地址。 1. 使用unetbootin-windows-585.exe 軟件做 ubuntu 的liveusb &#xff0c;一定是做liveusb&#xff0c;不是liveCD&#xff0c;如果你做的是liveCD&#xff0c;要把做好的文件拷出來&#xff0c;否則&#xff0c;重…

Webpack4: Tree-shaking 深度解析

什么是Tree-shaking 所謂Tree-shaking就是‘搖’的意思&#xff0c;作用是把項目中沒必要的模塊全部抖掉&#xff0c;用于在不同的模塊之間消除無用的代碼&#xff0c;可列為性能優化的范疇。 Tree-shaking早期由rollup實現&#xff0c;后來webpack2也實現了Tree-shaking的功能…

真格量化——GFTD策略

#!/usr/bin/env python # coding:utf-8 from PoboAPI import * import datetime import numpy as np import math#開始時間,用于初始化一些參數 def OnStart(context) :print "I\m starting..."#設置全局變量g.signalcount = 0 g.signal_list = []g.buysignal = 0 g…

解決org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql ...

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如題&#xff1a; org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [id]…

Spring WebFlux 響應式編程學習筆記(一)

各位Javaer們&#xff0c;大家都在用SpringMVC吧&#xff1f;當我們不亦樂乎的用著SpringMVC框架的時候&#xff0c;Spring5.x又悄(da)無(zhang)聲(qi)息(gu)的推出了Spring WebFlux。web? 不是已經有SpringMVC這么好用的東西了么&#xff0c;為啥又冒出個WebFlux&#xff1f;…

Django Rest Framework -解析器

基本代碼結構 urls.py rom django.conf.urls import url, include from web.views.s5_parser import TestViewurlpatterns [url(rtest/, TestView.as_view(), nametest), ]views.py from rest_framework.views import APIView from rest_framework.response import Response f…

真格量化——菜粕策略

#!/usr/bin/env python # coding:utf-8 from PoboAPI import * import datetime import time import numpy as np from copy import *#開始時間,用于初始化一些參數 def OnStart(context) :context.myacc = None#登錄交易賬號if context.accounts["回測期貨"].Login…

PostgreSQL查看版本信息

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.查看客戶端版本 psql --version 1 2.查看服務器端版本 2.1 查看詳細信息 select version(); 1 2.2 查看版本信息 show server_ve…

U盤版便攜式Linux制作, casper-rw 解析

一直都在想&#xff0c;不管用誰的電腦&#xff0c;我都可以得到一個完全一致的工作環境&#xff0c;上面有我喜愛的軟件&#xff0c;有我保存的重要資料&#xff0c;甚至瀏覽器的各種偏好都得一模一樣&#xff01;現在的云計算技術可以部分解決這個問題&#xff0c;但是遠遠不…

真格量化-50ETF期權波動率策略

#!/usr/bin/env python # coding:utf-8 from PoboAPI import * import datetime import time import numpy as np #日線級別 #開始時間,用于初始化一些參數 def OnStart(context) :print("I\m starting...")#設定一個全局變量品種,本策略交易50ETF期權g.code = Get…

canvas反向裁剪技巧

我們都知道在canvas 可以通過clip來實現剪裁功能&#xff0c;其步驟一般是先設置要裁剪的區域&#xff08;路徑&#xff09;&#xff0c;然后通過ctx.clip()的實現裁剪&#xff0c;裁剪之后&#xff0c;后續的繪制只能在裁剪的區域顯示效果&#xff0c;比如如下一段代碼&#x…

set 和select 的區別

簡單賦值是沒有區別的 轉載于:https://www.cnblogs.com/bingyizhihun/p/10597908.html

postgres大版本升級

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。進行升級版本之前請一定做好備份&#xff01;查看當前版本&#xff1a;[postgresnode1 ~]$ psqlpsql (9.4.4)Type "help" for h…