linux偵錯程式的實現 主要框架

2021-08-10 19:17:19 字數 1269 閱讀 8695

主要用的知識點:ptrace,關於ptrace不太了解的同學可以先看看這兩篇文章:

玩轉ptrace1:

玩轉ptrace2:

首先執行我們的偵錯程式,偵錯程式作為父程序,fork乙個子程序,在子程序中先trace_me,然後呼叫exec函式去執行被除錯的程序。在父程序中執行乙個大迴圈,去監聽我們輸入的除錯指令。

我們來看看main函式

#include

#include

#include

#include "debugger.h"

int main(int argc,char *argv)else

if(pid>=1)

}

當子程序的狀態改變的時候,父程序就能收到這種訊號。

我們繼續看父程序中的run函式:

void debugger::run()

}

我們繼續看handle_command函式:

void debugger::handle_command(const

std::string&line)

else

if(is_prefix(command,"break"))

;//從0x以後開始初始位址,認為使用者已經加上了0x

set_breakpoint_at_address(std::stol(addr,0,16));//設定斷點

}else

if(is_prefix(command,"register"))

else

if(is_prefix(args[1],"read"))

else

if(is_prefix(args[1],"write"))

;set_register_value(m_pid,get_register_from_name(args[2]),std::stol(val,0,16));

}}else

if(is_prefix(command,"memory"))

;if(is_prefix(args[1],"read"))

if(is_prefix(args[1],"write"))

;write_memory(std::stol(addr,0,16),std::stol(val,0,16));}}

else

}

這裡我們先實現了幾個常用的命令,後邊還會對這些命令有擴充。

接下來的幾篇,我們將會分析每個命令的實現。

python的偵錯程式 Python 偵錯程式入門

python 生態系統包含豐富的工具和庫,可以讓開發人員更加舒適。例如,我們之前已經介紹了如何使用互動式 shell 增強 python。本文重點介紹另一種可以節省時間並提高 python 技能的工具 python 偵錯程式。python 偵錯程式 python 標準庫提供了乙個名為 pdb 的偵錯...

Linux偵錯程式 gdb使用

1.背景 程式的發布方式有兩種,debug模式和release模式 linux gcc g 出來的二進位制程式,預設是release模式 要使用gdb除錯,必須在源 生成二進位制程式的時候,加上 g選項 2.開始使用 gdb binfile 退出 ctrl d 或quit除錯命令 list l 行號...

Linux下偵錯程式GDB makefile的使用

前面的幾篇部落格中我們講解了linux下的編輯器vim 編譯器gcc和g 今天我們來介紹一下其他常用的三種工具,它們分別是程式偵錯程式 gdb 檢視器 ctags 還有乙個輔助工程的工具 makefile 程式偵錯程式 gdb 在windos下我們常用vs編輯器中自帶的除錯工具進行程式的除錯,對於程...