1. 程式人生 > >基於網路的核心除錯

基於網路的核心除錯

    驅動除錯需要用到兩臺機器,目前主要是通過串\口、usb或者1394介面來連線。對於軟裝置驅動來說就多了一種選擇,通過vmware等虛擬化軟體來虛擬測試機。但有些情況下必須在真實的雙機環境進行,如真實裝置驅動的除錯,以及其他驅動無法在虛擬機器上執行的情況,這時就要考慮用什麼介面來連線了。串列埠的優點是它屬於標配,幾乎每個PC主機板上都有,串列埠線也便宜,另外就是所有的windows系統都支援串列埠除錯,所以很多同行都用串列埠進行驅動除錯,但它有個缺點速度慢,最快也只能達到115200Usb1394的速度比串列埠速度快,但要找到合適的usb線也不容易,1394就更難了。在這樣的情況下,如果可以通過網路進行雙機除錯一定會是很好的除錯體驗。

    很可惜,想要通過網路進行驅動除錯也是有要求的。為了敘述方便我們先明確兩個概念。

    1. 目標機,指的是安裝和執行被除錯驅動的機器。

    2. 宿主機,執行偵錯程式對目標機進行除錯的機器。

    要通過網路進行驅動除錯,需要滿足以下幾個方面的要求:

    1. 目標機和宿主機的網絡卡要支援這種除錯。

    2. 目標機作業系統必須是win8或者windows server 2012.

    3. 宿主機作業系統可以使XP或者更高版本的系統。

    條件是苛刻了點,但隨著win8的普及,相信使用這種方法進行驅動除錯的人會越來越多。接下來進入本文的重點,除錯環境的配置。

    1. 用ipconfig

以及ping命令確定目標機和宿主機的IP以及網路連線情況。

    2. 選擇一個宿主機和目標機都要用到的網路埠,你可以在49152-65535這個範圍選擇,確保你選擇的埠沒有被其他程序佔用。

    3. 在目標機執行如下命令:

       (1)bcdedit /debug on

        (2) bcdedit /dbgsettings net hostip:w.x.y.z port:n

    其中w.x.y.z表示宿主機IPn表示剛才選擇的網路埠。(2)這個命令將會產生一個key,把這個key抄下來,等會要用到。

    如果目標機有多個網絡卡,還需要執行如下命令:

    bcdedit /set {dbgsettings} busparams 

b.d.f 

    其中b為匯流排號,d為裝置號,f為功能號,這些可以在裝置管理器中查到。

    4. 重啟目標機。

    5. 在宿主機上開啟windbg,選擇kernel debug下的net標籤,填入選擇的埠號和剛才的key,點選OK就可以開啟除錯會話。你也可以在命令視窗執行windbg -k net:port=n,key=Key 來開啟除錯會話。

    從上面可以看出,配置也是挺簡單的。筆者很早以前就想過這種除錯方法,奈何微軟一直都不支援, 估計微軟內部應該也有這種需求,所以現在出來這種技術。時間晚了點,要是XPwin7能支援就更好。筆者認為,使用網路來除錯將會變成主流。(PSwin8system32目錄下有個kdnet.dll,正是這個庫支援的網路除錯,不知道有沒有人有這個興趣去研究下,能移植到win7winxp就好了。筆者最近需要在真實雙機環境下測試一個驅動,這個驅動還不能在win8上跑,上面的辦法我是用不了了,目前正在用串列埠除錯。)

相關推薦

基於網路核心除錯

    驅動除錯需要用到兩臺機器,目前主要是通過串\口、usb或者1394介面來連線。對於軟裝置驅動來說就多了一種選擇,通過vmware等虛擬化軟體來虛擬測試機。但有些情況下必須在真實的雙機環境進行,如真實裝置驅動的除錯,以及其他驅動無法在虛擬機器上執行的情況,這時就要考慮用什麼介面來連線了。串列埠的優點是

Linux核心除錯環境搭建(基於ubuntu12.04)

by Netfairy - 2016-05-29 一、測試環境 物理機:ubuntu16.04 LTS target(被除錯機)環境:VirtualBox 5.0.20+ubuntu 12.04 LTS + linux kernel 3.0.4 host

linux核心資料結構以及核心除錯

一、可移植性 1.1 資料型別可移植性 由於核心可能執行在不同的架構上,不同的架構具有不同的機器字長,因而可移植性對核心程式設計非常重要。核心資料使用的資料型別分為 3 個主要型別 標準C型別 明確大小的型別 用作特定核心物件的型別 1.1.1 標準 C 型別 使用標準

庖丁解牛Linux網路核心

通過TCP協議進行C/S模式的網路通訊 學習要由淺入深、由易到難,分析Linux核心中網路部分就要從核心對外提供的socket封裝介面說起,典型以TCP協議C/S方式socket通訊大致過程如圖所示: (圖片來源於網路) 從圖中可以看到TCP服務端server的初始化過程複雜一些,就像開一個小賣鋪,你要

SylixOS 核心除錯

1、printk()是最常用的,可以在核心態中列印響應除錯資訊; 2、部分核心程式碼中無法使用printk()列印資訊時就需要用到_DebugFormat(),申明如下: _DebugFormat(level, fmt, ...) level可選值如下: #define __LO

SylixOS下開啟核心除錯資訊

    開啟檔案libsylixos/SylixOS/config/net/net_cfg.h 將巨集LW_CFG_LWIP_DEBUG置1     開啟檔案libsylixos/SylixOS/include/network/

嵌入式Linux開發——(十六)Linux核心除錯技術

1、核心列印函式printk     ①printk函式與printf函式用法格式完全相同     ②它所列印的字串頭部可以加入“<n>”樣式字元,n=0---7表示這條資訊的記錄  級別     ③對於p

P2P 網路核心技術:Gossip 協議

背景 Gossip protocol 也叫 Epidemic Protocol (流行病協議),實際上它還有很多別名,比如:“流言演算法”、“疫情傳播演算法”等。 這個協議的作用就像其名字表示的意思一樣,非常容易理解,它的方式其實在我們

Android : 安卓裝置配置網路adb除錯

一、除錯環境: Android Debug Bridge version 1.0.40 + Nexus7平板; 二、除錯步驟:    1. Android裝置除了用有線usb進行ADB除錯外,還可以在同一區域網通過網路ADB連線,一般指令為 adb connect 192.168.2.36(此為當前And

計算機網路(1)-計算機網路概述:網路結構(網路邊緣、接入網路網路核心

文章目錄 1. 計算機網路基本概念 2. 計算機網路結構 3. 網路核心之資料交換 1. 電路交換 2. 多路複用技術 3. 報文交換 4. 分組交換(因特網)

基於IE核心的多媒體檔案視覺化程式實現(二)

文章目錄 使用命令列引數 命令列引數獲取和解析程式碼 幫助系統 執行測試 WSEE的功能還不只如此 現在的結果 上回說道,我們需要使用命令列引數方法將要瀏覽的檔名傳入wsee.exe 程式,然後由

linux核心除錯技巧之一 dump_stack【轉】

在核心中程式碼呼叫過程難以跟蹤,上下文關係複雜,確實讓人頭痛 呼叫dump_stack()就會列印當前cpu的堆疊的呼叫函數了。 如此,一目瞭然的就能看到當前上下文環境,呼叫關係了 假設: 遇到uvc_probe_video這麼一個函式,不知道它最終是被誰呼叫到的,根據linux裝置模型,初步推測,p

基於IE核心的多媒體檔案視覺化程式實現(一)

目的 前回書說道,在訊號處理或演算法研究中,資料的視覺化可以直觀地展現和判別結果的合理性。如果只允許用C語言做開發,或要將C語言所做演算法的輸出資料進行展示,又不許用MATLAB、Python所帶的視覺化工具,那麼,最快捷而直接的辦法就是將資料以文字方式輸出,再

Android Studio 通過網路方式除錯

一、環境設定 1、安卓裝置乙太網進行網路設定,包括IP地址、閘道器等(必須同連線的網路為同網段;可參考電腦IPV4的屬性,設定的IP地址為非佔用的IP) 2、連線方式通過有線網路連線需要測試的安卓裝

基於Linux核心的UDP協議原始碼分析

  當一個數據包(package)經過IP層的處理之後,最終呼叫ip_local_deliever()函式,這個函式會根據這個資料包(packet)的傳輸層頭兒確定其採用的傳輸協議,如果是UDP協議,將會呼叫udp_rcv()函式。至此,進入傳輸層的範圍。 UDP協議棧的報頭定義如下:

Golang網路:核心API實現剖析(一)

這一章節我們將詳細描述網路關鍵API的實現,主要包括Listen、Accept、Read、Write等。 另外,為了突出關鍵流程,我們選擇忽略所有的錯誤。這樣可以使得程式碼看起來更為簡單。 而且我們只關注tcp協議實現,udp和unix socket不是我們關心的。 L

計算機網路核心基礎知識總覽

第一章——概述 計算機網路效能指標 1、速率,傳輸資料速率,也叫資料率、位元率,單位有:b/s、kb/s、Mb/s、Gb/s、Tb/s 2、頻寬,最高傳輸速率,即為速率最高值,單位與速率相同 3、吞吐量,單位時間通過某個網路通道或介面的資料量,單位b、kb、Mb

HI_SDK 核心除錯

/etc/init.d # cat rcS #! /bin/sh /bin/mount -a echo " _ _ _ _ _ _ _ _ _ _ _ _ \ _ _ _ _ _ ___ / /__/ \ |_/

【舊文章搬運】Windbg+Vmware驅動除錯入門(四)---VirtualKD核心除錯加速工具

原文發表於百度空間,2009-01-09========================================================================== 今天又想起來VirtualKD這個東西,試用了一下,真是爽壞了,可能我火星了~~ 很久以前就知道小喂有個VmKd工具

《Linux核心設計與實現》讀書筆記(十八)- 核心除錯

核心除錯的難點在於它不能像使用者態程式除錯那樣打斷點,隨時暫停檢視各個變數的狀態。 也不能像使用者態程式那樣崩潰後迅速的重啟,恢復初始狀態。 使用者態程式和核心互動,使用者態程式的各種狀態,錯誤等可以由核心來捕獲並顯示。 而核心是直接和硬體互動的,核心出錯之後整個系統就無法正常運行了,所以要想熟練的