gdb除錯時區域性變數不可檢視問題
除錯程式時,在gdb內p var,會提示
No symbol "var" in current context.
即使沒有使用任何編譯優化選項,仍然不能檢視,放狗搜了一下,可能是這些變數被優化到暫存器中,gdb無法讀取。
解決方案:
在編譯是加入 ‘-gstabs+’ 選項,比如:
g++ -g -Wall -gstabs+ -o main.o main.cpp
gdb main,就可以檢視區域性變量了。
相關推薦
gdb除錯時區域性變數不可檢視問題
除錯程式時,在gdb內p var,會提示 No symbol "var" in current context. 即使沒有使用任何編譯優化選項,仍然不能檢視,放狗搜了一下,可能是這些變數被優化到暫存器中,gdb無法讀取。 解決方案: 在編譯是加入 ‘-gstabs+’ 選項
gdb除錯時檢視記憶體
x/<n/f/u> <addr> n、f、u是可選的引數,<addr>表示一個記憶體地址 1) n 是一個正整數,表示顯示記憶體的長度,也就是說從當前地址向後顯示幾個地址的內容 2) f 表示顯示的格式 3) u 表示將多少個位元
linux GDB除錯時的臨時變數,臨時指標
今天除錯遇到了個很麻煩的事情,為了復現一個棧完全被踩成0x01010101010101010101的問題較勁了好幾天 期間需要多次call 函式來模擬程序裡的函式呼叫 但是坑爹的是,這個read_xxx(int, int, int*) 有個坑爹的指標 前2個入參好辦,直接傳
gdb除錯時顯示陣列
可以用下面的方法來顯示陣列 p *[email protected] 其中p相當於print,array就是陣列首地址,也可以是陣列名,len是想要顯示的陣列的長度。 比如我有一個數組的定義 int a[] = {1, 2, 3, 4, 5}; &nb
使用gdb除錯時出現:Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.212.el6.i686的解決辦法
今天在redhat6.3(32位)下使用gdb除錯程式的時候,出現一段警告,在此總結出解決辦法,方便後來的學者: 提示需要使用debuginfo安裝glibc-2.12-1.212.el6.i686,但是這裡有個問題:linux系統下有debuginfo嗎?
gdb 除錯時指定跳到第幾行
假設要從當前位置(main.c, ln 18)跳到 main.c, ln 21,忽略中間的 main.c, ln 19 ~ ln 20,可以這樣做:(jump 縮寫是 j) (gdb) b 21 (gdb) j 21 在 (gdb) c 之後,gdb 會跳過 ln 19
新建的vs專案,在debug除錯時,斷點不可用時的解決方案
(1)專案-〉屬性-〉配置屬性-〉C/C++-〉常規-〉除錯資訊格式,這裡不能為“禁用”。 (2)專案-〉屬性-〉配置屬性-〉連結器-〉除錯-〉生成除錯資訊,這裡設為“優化以便於除錯 (/DEBUG)”。
keil mdk除錯過程中檢視區域性變數的方法
上次除錯STM32做了一次總結,此次在除錯nordic 51822時發現區域性變數地址給不出任何資訊, 導致無法檢視區域性變數值。通過和STM32的設定進行必較發現C/C++的編譯器等級設定過高,而將 一些區域性變數優化掉而沒有分配記憶體地址。
keil除錯過程檢視全域性變數和區域性變數的方法及編譯器優化
keil除錯過程檢視全域性變數和區域性變數的方法及編譯器優化 一、檢視全域性變數的方法:Watch Window The Watch window allows to evaluate symbols, registers, and expressions. The window
Android Studio 在除錯模式下檢視不了區域性變數
我在把eclipse的專案匯入到studio後進行斷電除錯,發現都檢視不了區域性變數的值,後來上網查了下,說是在gradle檔案把testCoverageEnabled設為false就可以了,試了下果然
iphone ios debug 除錯時如何檢視、監視變數
對於IPhone開發/XCode的初學者,如何在除錯時檢視變數的值是很頭痛的事情。因為Xcode的expression 經常無法正確顯示變數的值。但是強大的GDB可以很方便的幫我們檢視變數的值。 當執行到某斷點時,在GDB視窗中使用po就可以檢視變數.(po = pri
VS除錯時監視/檢視全域性變數
最近同事在除錯一個十多年前就開始寫的程式,在VS下基於MFC的專案,其中使用了部分全域性變數,現在需要在原來的基礎上增加新的功能,問我能不能用直接在Watch視窗直接檢視全域性變數值,他的方法是把全域性變數賦值給區域性變數再檢視,由於多個位置需要就得新增很多的程式碼,除錯
用gdb除錯C++程式時列印變數的值
如果這個值是本地變數,那麼沒有任何的問題。gud-tooltip-mode也能正確顯示。不過如果是類裡的成員,有的時候就麻煩了。據我目前的觀察,有的時候gdb可以正確的找到當前類的繼承關係,可以直接使用this來訪問相關資訊:p *this: 打印出當前類裡所有的成員的值p this->member:
很經典的GDB除錯命令,包括檢視變數,檢視記憶體
在你除錯程式時,當程式被停住時,你可以使用print命令(簡寫命令為p),或是同義命令inspect來檢視當前程式的執行資料。print命令的格式是: print print / 是表示式,是你所除錯的程式的語言的表示式(GDB可以除錯多種程式語言),是輸出的格式,比如,
gdb watch 除錯時,無法watch
伺服器實際執行時, 某個物件的某個變數不知道啥時候被改掉了。 用valgrind查了 ,沒有記憶體越界, 那就是邏輯上有問題。 這種情況 gdb 的 watch功能就非常好用。 它能檢測記憶體中的值被改了,就會自動斷點。
gdb除錯 列印輸出長變數的值到外部文本里
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
linux下gdb除錯檢視原始碼
GDB是GNU開源組織釋出的一個強大的UNIX下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像VC、BCB等IDE的除錯,但如果你是在UNIX平臺下做軟體,你會發現GDB這個除錯工具有比VC、BCB的圖形化偵錯程式更強大的功能。所謂“寸有所長,尺有所短”就是這個道理。 &nb
使用GDB除錯組合語言,檢視plt過程
在linux x86平臺下,程式連結的plt got裡面的值是如何變化的,下面來進行演示: 首先寫好一個c檔案: #include <stdio.h> int main(void) { printf("hello world\n"); re
匿名類訪問區域性變數時,為什麼區域性變數必須加final
匿名內部類就是在物件的方法體內部定義的類。我們都知道方法中的匿名內部類是能夠訪問同一個方法中的區域性變數的,但是為什麼區域性變數要加上一個final呢? 原因就是因為匿名內部類物件的生命週期可能會超過區域性變數的生命期。區域性變數的生命週期是當該方法被呼叫時,該方法中的區
Java內部類訪問區域性變數時的final問題
JAVA用了也快三年了,內部類訪問區域性變數的情況也沒少遇到。也一直知道要給變數加個final修飾符,不然通過不了編譯。但一直也沒深究過為什麼要加。昨天好奇的上網查了下,並翻閱了下相關的書籍(Core Java 8th),終於算是搞明白了,在這裡簡單說明下。 說先我們來