2013-04-22 24 views
1

我正在用gdb調試Fortran程序,以及何時在斷點處嘗試使用p/d cs(ii,inti+1)打印二維數組的元素得到消息當前上下文中沒有符號cs。但是,cs在當前範圍內顯然是可用的 - 我剛剛跨過的這一行使用了它 - 雖然沒有聲明爲thare,但是在模塊級別(在同一模塊中)。使用gdb調試Fortran:顯示所有變量的名稱,但不顯示其內容

我試圖找出哪些變量可用,看看我是否可以找出爲什麼gdb不會讓我查看這一個的內容。 info locals對我沒有什麼好處,因爲我沒有在局部變量之後,並且info variables需要永久完成,因爲我有兩個具有10000行的矩陣,它不僅打印名稱,還打印內容,每個變量。

有沒有辦法只打印(也可能是尺寸)所有變量可用在當前範圍內?雖然我問 - 有沒有什麼明顯的我在這裏錯過,這解釋了爲什麼我不能查看cs(ii,inti+1)的內容?

回答

0

對於原始的「在當前上下文中沒有符號cs」的問題,我會在反彙編中快速查看函數是否被內聯。

只需打印全局變量的名稱和類型就可以用Python腳本實現。

保存這list-globals.py

import gdb 
block = gdb.block_for_pc(long(gdb.parse_and_eval('$pc'))).global_block 
for symbol in block: 
    gdb.write('%s: %s\n' % (symbol.print_name, symbol.type)) 

然後運行:

$ gdb /bin/true 
(gdb) start 
(gdb) source list-globals.py 

你的GDB需要與啓用,雖然Python腳本編譯。

相關問題