1. 程式人生 > >kernel debug(核心除錯)

kernel debug(核心除錯)

1.yum -y install ncurses-devel.x86_64 elfutils-libelf-devel.x86_64 elfutils-libelf-devel.x86_64

2.download kernel and busybox

3. kernel compress:

   make ARCH=x86_64 CROSS_COMPILE=x86_64-none-linux- defconfig
   make ARCH=x86_64 CROSS_COMPILE=x86_64-none-linux- menuconfig
   make ARCH=x86_64 CROSS_COMPILE=x86_64-none-linux- -j8



4.Generate minimal initramfs

#!/usr/bin/bash
ROOTFS=rootfs
BUSYBOX=$(find busybox* -maxdepth 0 -type d)
SYSROOT=$(x86_64-linux-gnu-gcc --print-sysroot)
GLIBC_VERSION=$(${SYSROOT}/usr/bin/ldd --version | head -1 | cut -d' ' -f4)
DYNAMIC_LIB_PATH_32=${SYSROOT}/lib
DYNAMIC_LIB_PATH_64=${SYSROOT}/lib64

rm -rf $ROOTFS
mkdir -p ${ROOTFS}/{proc,sys,dev,etc,etc/init.d,lib,lib64,mnt,tmp,go}

cat > $ROOTFS/etc/init.d/rcS <<EOF
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
/sbin/mdev -s
ifconfig lo up
EOF

chmod +x $ROOTFS/etc/init.d/rcS

cat > $ROOTFS/etc/inittab <<EOF
# /etc/inittab
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
EOF

chmod +x $ROOTFS/etc/inittab

cp -rP ${BUSYBOX}/_install/* ${ROOTFS}

cp -rP ${DYNAMIC_LIB_PATH_64}/libc-${GLIBC_VERSION}.so ${ROOTFS}/lib64/
cp -rP ${DYNAMIC_LIB_PATH_64}/libc.so.6 ${ROOTFS}/lib64/

cp -rP ${DYNAMIC_LIB_PATH_64}/libm-${GLIBC_VERSION}.so ${ROOTFS}/lib64/
cp -rP ${DYNAMIC_LIB_PATH_64}/libm.so.6 ${ROOTFS}/lib64/

cp -rP ${DYNAMIC_LIB_PATH_64}/librt-${GLIBC_VERSION}.so ${ROOTFS}/lib64/
cp -rP ${DYNAMIC_LIB_PATH_64}/librt.so.1 ${ROOTFS}/lib64/

cp -rP ${DYNAMIC_LIB_PATH_64}/libpthread-${GLIBC_VERSION}.so ${ROOTFS}/lib64/
cp -rP ${DYNAMIC_LIB_PATH_64}/libpthread.so.0 ${ROOTFS}/lib64/

cp -rP ${DYNAMIC_LIB_PATH_64}/ld-${GLIBC_VERSION}.so ${ROOTFS}/lib64/
cp -rP ${DYNAMIC_LIB_PATH_64}/ld-linux-x86-64.so.2 ${ROOTFS}/lib64/

cd ${ROOTFS}
ln -sf bin/busybox init
find . | cpio -o --format=newc > ../initramfs
$ cd ~/workspace 
$ gdb
 (gdb) file linux-3.10.107/vmlinux 
Reading symbols from /home/yeyuzhen/workspace/linux-3.10.107/vmlinux...done.
(gdb) target remote:4321 
Remote debugging using :4321 kgdb_breakpoint () at kernel/debug/debug_core.c:1014 1014 wmb(); /* Sync point after breakpoint */


(gdb) b sys_sendto Breakpoint 1 at 0xffffffff815b44d0: file net/socket.c, line 1754. 
(gdb) info b Num Type Disp Enb Address What 1 breakpoint keep y 0xffffffff815b44d0 in SyS_sendto at net/socket.c:1754 (gdb) c Continuing.

相關推薦

kernel debug核心除錯

1.yum -y install ncurses-devel.x86_64 elfutils-libelf-devel.x86_64 elfutils-libelf-devel.x86_64 2.dow

java Remote Debug遠端除錯

新接手的專案採用的是Maven作為編譯管理工具,專案內容則是按子模組Module來劃分。由於模組太多,且都比較大(基本上都能獨立執行並負責處理一方面的業務),並採用Socket來進行模組之間的資料通訊,結果就導致一個略顯臃腫的系統產生了。最重要的是,不知道mav

VS中生成、清理專案、除錯、開始執行除錯Debug 和 Release等之間的差別

一、生成和又一次生成 “生成”的時候僅僅對你修改過的檔案又一次生成沒有修改過的檔案不會又一次生成。 “又一次生成”是對全部的檔案都又一次生成。 以cpp為例當你僅僅修改某些.cpp之類的檔案的時候能夠用生成省了編譯沒有修改的那些些檔案的時間;可是修改了某些.h之類的檔案最好用又

smali 除錯方法動態除錯

smali檔案 1.下圖為基本的smali結構 一個smali檔案對應一個class 2.欄位描述符‘ Java中Void在smali中對應V Void -> V 其他具體描述符參考下面表格: 下面貼上兩段例子程式碼對應看下: Androi

支付寶APP支付整合+.net沙箱除錯

1.服務端整合程式碼 private const string APPID = "發起請求的應用ID"; private const string APP_PRIVATE_KEY = "私鑰"; private const string ALIPAY

Eclipse 如何遠端DEBUG Ubuntu+tomcat8

我們很多專案都需要放到伺服器上執行,但是伺服器上又無法在執行時進行除錯,因此遠端DEBUG就出來了,它是JVM就提供瞭如下的的錯誤處理方式: 1.JVMTI定義了虛擬機器應該提供的除錯服務,包括除錯資訊(Information譬如棧資訊)、除錯行為(Action譬如客戶端設定一個

微信小程式-day02-微信小程式-框架-配置-pages、windows、tabBars、debugjson檔案

1.pages(頁面路徑列表) "pages":[ "pages/index/index", "pages/do/do", "pages/eat/eat", "pages/logs/logs" ] 2.windows(全域性的預設視窗表現) "window":{

Qt for ios 在 xcode 中編譯便於除錯

前言 用 Qt 開發 IOS 程式需要搭配最新版的 xcode 才能進行編譯,這個毫無疑問吧。如果需要設定程式圖示或啟動頁之類這種平臺性的功能,直接在 xcode 中進行設定是最方便的,並且在 xcode 中除錯會很方便,最大的好處就是在 xcode 工具中進行編譯速度真的超快,和Q

Dubbo直連提供者開發除錯

開發及測試環境下,經常需要繞過註冊中心,只測試指定服務提供者,這時候可能需要點對點直連。 點對點直連方式,將以服務介面為單位,忽略註冊中心的提供者列表。 A介面配置點對點,不影響B介面從註冊中心獲取列表。 以下介紹兩種方式: 1)可在消費者<dubbo:refe

續接nodejs釋出核心模組

10 ? node 如何使用: 10.1 建立js檔案。 10.2 進入js檔案所在的目錄:開啟黑視窗, 輸入cd 空格 然後把目錄直接拖入到黑視窗,點選回車 10.3 可以通過dir 檢視當前路徑下的檔案 ★ 10.4 可以通過node 檔名稱 執行相關j

Android應用配置成系統識別視訊應用核心配置

Android應用配置成系統識別視訊應用(核心配置) <activity android:name=".ui.activity.KXVideoPlayerActivity" android:configChanges="scree

【新聞】本人新書《Java多執行緒程式設計實戰指南核心》已出版上市

豆瓣主頁 購買連結 試讀下載 (待補充) 原始碼下載 內容簡介 隨著現代處理器的生產工藝從提升處理器主頻頻率轉向多核化,即在一塊晶片上整合多個處理器核心(Core),多核處理器(Multicore Proc

JQuery 之從 $核心函式載入事件入門

JQuery 程式碼少而多實現的JS類庫 就是這麼6 一、關於JQuery (一)、什麼是JQuery ? 《1》jQuery,顧名思義,也就是JavaScript和查詢(Query),它就是輔助JavaScript開發的js類庫。 1、使用j

如何抓取基於https協議的webservice資料包webservice除錯

     最近在寫一個客戶端訪問客戶提供的webservice時,得到響應異常,於是想用工具抓取請求響應的soap資料查詢異常原因,如果service是http釋出的,用一般的http、tcp監控工具都可以抓到傳送資料的原文,但是我請求的service是https釋出的,使用

Dubbo高階篇_10_Dubbo消費端直連服務提供者開發除錯

直連提供者(+) (#)在開發及測試環境下,經常需要繞過註冊中心,只測試指定服務提供者,這時候可能需要點對點直連,點對點直聯方式,將以服務介面為單位,忽略註冊中心的提供者列表,A介面配置點對點,不影響B介面從註冊中心獲取列表。(1) 如果是線上需求需要點對點,可在<du

解決 無法啟動除錯。繫結控制代碼無效 開始執行除錯 錯誤

【摘要】VS.NET"試圖執行專案時出錯:無法啟動除錯。繫結控制代碼無效"解決辦法 不要急著重灌.在選單欄裡面選擇"除錯">>"開始執行(不除錯)" 試試,如果這樣能成功,就不需要重灌 【全文】VS.NET"試圖執行專案時出錯:無法啟動除錯。繫結控制代碼無效"解決辦法 不要急著重灌.

[認證授權] 4.OIDCOpenId Connect身份認證授權核心部分

1 什麼是OIDC? OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It allows Clients to verify the identity of the End-User ba

spark-shell啟動中bug除錯bug除錯

報錯資訊: Exception in thread "main" java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Prot

Java多執行緒程式設計實戰指南核心讀書筆記

博主準備惡補一番Java高併發程式設計相關知識,接下來將閱讀該書,並且進行比較詳細的總結,好記性不如爛筆頭,加油。Java多執行緒程式設計實戰指南(核心篇)讀書筆記(四),主要記錄該書第七章和第八章的基

Chrome developer tool介紹javascript除錯

Chrome瀏覽器得益於其優秀的V8直譯器,javascript執行速度和記憶體佔有率表現非常優秀。對於html+css+javascript前臺技術的學習或者開發,瀏覽器developer tool的使用時必不可少的