主要用的知識點: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編輯器中自帶的除錯工具進行程式的除錯,對於程...