6
我已經在我的Ubuntu 13.10 x86_64上成功構建並安裝了Ian Buclaw's(ibuclaw)GDB分支,其默認編譯器GCC 4.8.1已在我的Ubuntu 13.10 x86_64上安裝。使用GDB進行調試不能查找D程序符號
我不得不從bin
子目錄中刪除文件ld
否則 DMD抱怨鏈路階段的sysroot事情。
當我編譯我的測試程序並通過GDB運行時,我有 問題。
我可以做break main
,運行和GDB停靠在main
開始,但是當我做next
我得到以下不需要輸出
Single stepping until exit from function main,
which has no line number information.
0x00007ffff760ede5 in __libc_start_main() from
/lib/x86_64-linux-gnu/libc.so.6
是不是ibuclaw的GDB應該在這裏工作?
我的測試程序被編譯爲
dmd -debug -g -gs -wi t_array.d -oft_array
沒有任何警告,也沒有錯誤。我也試着假裝爲C
dmd -debug -g -gc -gs -wi t_array.d -oft_array
具有相同的結果。
此外,當我做b
後跟選項卡時, 中的大部分符號都未被取消折疊。
我的測試程序看起來像
import std.stdio, std.algorithm;
void main(string args[]) {
int[] x;
writeln(x.sizeof);
if (x) {
writeln("Here!");
} else {
writeln("There!");
}
int xx[2];
auto xc = xx;
xc[0] = 1;
writeln(xx);
writeln(xc);
int[2] xx_;
auto hit = x.find(1);
if (hit) {
writeln("Hit: ", hit);
} else {
writeln("No hit");
}
int[2] z; // arrays are zero initialized
writeln(z);
assert([].ptr == null);
assert("ab"[$..$] == []);
auto p = "ab"[$..$].ptr;
writeln(p);
assert(p != null);
}
現在一切正常!平原精彩! –
當我像上面那樣運行它時,在GDB中執行'print SYMBOL'時,幾乎沒有任何D符號能夠正確顯示與名稱demangling及其值有關的信息。這是ibuclaw的GDB的現狀還是我錯過了什麼? –
GDB還無法對全部D符號進行解構。 Iain Buclaw(GDC項目的核心開發人員)最近做了一些改進,很快希望將其合併到主要的GDB代碼中,這對我們有很大的幫助。你有沒有試圖用GDC編譯你的D程序? – DejanLekic