亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 請(qǐng)問我這個(gè)C++程序怎么不能用gdb羅列代碼? [打印本頁]

作者: kytexzy    時(shí)間: 2009-09-08 18:06
標(biāo)題: 請(qǐng)問我這個(gè)C++程序怎么不能用gdb羅列代碼?
我找了一個(gè)boost的聊天服務(wù)器的例子,想用gdb調(diào)試,我用CMake設(shè)置為debug模式,可是當(dāng)我
gdb -p xxx
時(shí),顯示:
Attaching to process 8003
Reading symbols from /home/zhen/works/c++/boost/asio/chat/build/server...done.
Reading symbols from /usr/lib/libboost_system-mt.so.1.38.0...Reading symbols from /usr/lib/debug/usr/lib/libboost_system-mt.so.1.38.0...done.
done.
Loaded symbols for /usr/lib/libboost_system-mt.so.1.38.0
Reading symbols from /usr/lib/libstdc++.so.6...done.
Loaded symbols for /usr/lib/libstdc++.so.6
Reading symbols from /lib/libm.so.6...Reading symbols from /usr/lib/debug/lib/libm-2.9.so...done.
done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libgcc_s.so.1...Reading symbols from /usr/lib/debug/lib/libgcc_s.so.1...done.
done.
Loaded symbols for /lib/libgcc_s.so.1
Reading symbols from /lib/libc.so.6...Reading symbols from /usr/lib/debug/lib/libc-2.9.so...done.
done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/libpthread.so.0...Reading symbols from /usr/lib/debug/lib/libpthread-2.9.so...done.
[Thread debugging using libthread_db enabled]
done.
Loaded symbols for /lib/libpthread.so.0
Reading symbols from /lib/librt.so.1...Reading symbols from /usr/lib/debug/lib/librt-2.9.so...done.
done.
Loaded symbols for /lib/librt.so.1
Reading symbols from /lib/ld-linux-x86-64.so.2...Reading symbols from /usr/lib/debug/lib/ld-2.9.so...done.
done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
0x00007fb24a9d8bb3 in __epoll_wait_nocancel () from /lib/libc.so.6
(gdb) list
1       fstab.c: 沒有那個(gè)文件或目錄.
        in fstab.c
(gdb)

請(qǐng)問我這問題在哪呢?

我用的系統(tǒng): Debian @ amd64。


作者: prolj    時(shí)間: 2009-09-08 18:12
gdb本來支持C++就不咋的
=================================
沒事扯CMake干啥?

[ 本帖最后由 prolj 于 2009-9-8 18:31 編輯 ]
作者: syncpk99    時(shí)間: 2009-09-08 18:29
fstab.c 是你自己的源代碼么?
怎么感覺是linux自己的庫文件中使用的代碼呢。如果是linux的代碼,要想list,就必須裝linux的源代碼才行啊。
作者: kytexzy    時(shí)間: 2009-09-08 18:33
我是在學(xué)習(xí)boost::asio,需要用到libboost_system,因?yàn)橐玫絜poll,估計(jì)是需要進(jìn)行系統(tǒng)調(diào)用吧!
但是這個(gè)fstab.c我就是不知道是哪個(gè)國家來的。

怎么才能讓gdb支持它喔!



[ 本帖最后由 kytexzy 于 2009-9-8 18:35 編輯 ]
作者: prolj    時(shí)間: 2009-09-08 18:35
fatab.c應(yīng)該是來自Linux
作者: kytexzy    時(shí)間: 2009-09-08 18:42
請(qǐng)哪位教教怎么用gdb 調(diào)試C++ asio庫相關(guān)的代碼。
作者: syncpk99    時(shí)間: 2009-09-08 18:53
和調(diào)試C代碼沒什么兩樣啊。
可以參考下面的網(wǎng)頁啊
http://www.72891.cn/viewthread.php?tid=1430107
作者: drangon    時(shí)間: 2009-09-08 20:04
你應(yīng)該先執(zhí)行 backtrace 命令,看一下堆棧,甚至 info threads,看看是哪個(gè)線程,然后選合適的線程的某個(gè)合適的frame進(jìn)行查看。

你的程序會(huì)調(diào)用到glibc里面的東西,而glibc一般是沒有debug信息的,除非你用帶debug的glibc。這個(gè)fstab.c有可能是glibc里面的東東
作者: kytexzy    時(shí)間: 2009-09-09 10:53
原帖由 drangon 于 2009-9-8 20:04 發(fā)表
你應(yīng)該先執(zhí)行 backtrace 命令,看一下堆棧,甚至 info threads,看看是哪個(gè)線程,然后選合適的線程的某個(gè)合適的frame進(jìn)行查看。

你的程序會(huì)調(diào)用到glibc里面的東西,而glibc一般是沒有debug信息的,除非你用帶 ...


這樣子的話我怎樣在gdb中瀏覽程序的代碼呢?我又設(shè)置程序的斷點(diǎn)呢?


作者: kytexzy    時(shí)間: 2009-09-09 17:06
asio的服務(wù)端程序Linux下用什么方法調(diào)試比較好?好像std::cout也打印不出來消息!不過用std::cerr可以!
但用print來調(diào)試也太低級(jí)了吧!我這個(gè)新手不大懂。



[ 本帖最后由 kytexzy 于 2009-9-9 17:29 編輯 ]
作者: drangon    時(shí)間: 2009-09-09 20:35
標(biāo)題: 回復(fù) #9 kytexzy 的帖子
你要瀏覽什么地方就直接瀏覽好了,例如退回高一點(diǎn)的你的代碼所在的frame,或者直接列出某個(gè)文件的某一行,
設(shè)斷點(diǎn)也一樣,直接設(shè)在函數(shù)名上,或者某個(gè)文件某一行上好了。
作者: drangon    時(shí)間: 2009-09-09 20:40
標(biāo)題: 回復(fù) #10 kytexzy 的帖子
不要認(rèn)為print低級(jí),一般調(diào)試到后面,很少會(huì)單步跟蹤的,都是靠日志的。

打日志最好定好原則,什么情況下打什么日志約定好,簡(jiǎn)潔一些,同時(shí)多輸出一些原始數(shù)據(jù)供參考。

一般簡(jiǎn)單的bug,通過單元測(cè)試,把所有路徑都覆蓋一下,基本都能解決。
復(fù)雜的bug,有時(shí)候幾天才出現(xiàn)一次,這時(shí)候單步跟蹤很累的。通常預(yù)先在關(guān)鍵點(diǎn)打日志,
根據(jù)輸出的原始數(shù)據(jù),想象模擬還原系統(tǒng)當(dāng)時(shí)的情況,分析可能出問題的地方,必要時(shí)再增加日志。
作者: kytexzy    時(shí)間: 2009-09-17 22:26
gdb可以調(diào)試boost的多線程程序,但是asio就是不能用list來羅列代碼,不能用list就不好設(shè)斷點(diǎn),這是最要命的東西!


作者: kytexzy    時(shí)間: 2009-09-18 09:42
終于找到問題,原來是我的CMake配置文件書寫得有點(diǎn)問題,用ccmake重新配置后就好啦!







歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2