簡體   English   中英

從用戶空間進程啟用內核模塊調試

[英]Enable debugging of kernel module from user-space process

我正在ubuntu 14.04服務器上使用openvswitch。 我可以輕松地在gdb的任何二進制文件中附加調試它的各種功能,但是當涉及到其內核模塊時,我無法按照我的要求對其進行調試。 我正在使用以下步驟將linux內核與gdb相連:1. gdb / tmp / vmlinux / proc / kcore 2.將符號文件添加到GDB:cd / sys / module / openvswitch / sections / ls -A1 .cat .text。數據.bss 3.在gdb中-添加符號文件datapath / linux / openvswitch.ko 0xf87a2000 -s .data 0xf87b4000 -s .bss 0xf87b4560 4. b vxlan_udp_encap_recv

但是當我生成用於測試ovs內核模塊的數據包並跳過它時,顯示“程序未在運行”。

注意:我已經通過運行以下命令確認了所有模塊符號:nm root / ovs / _build-gcc / datapath / linux / openvswitch.ko =將打印所有符號。 並且lsmod還確認了ovs內核模塊的存在。

我想讓ovs模塊在netlink套接字上從其用戶空間應用程序接收到一條消息后,在指定的斷點處停止,以進行詳細的調試,因為它允許我調試用戶空間進程。 請建議我如何解決此問題或是否有其他選擇。 如果有任何幫助或建議,我將不勝感激。 謝謝!

要調試內核,您需要使用KGDB / KDB

一種可能性:

在目標計算機上運行gdb服務器。 在另一台機器上運行gdb。 使用gcc上的-ggdb參數重新編譯目標計算機內核。 啟動兩台機器,目標機器運行帶有所有-ggdb信息的內核。 在兩台計算機上都有所有可用的源。 從測試機器連接到目標機器。 讓gdb服務器連接到內核....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM