在linux中列印函式呼叫棧
要求在linux系統的應用程式中寫乙個函式print_stackframe(),用於獲取當前位置的函式呼叫棧資訊
方法execinfo.h庫下的函式backtrace可以得到當前執行緒的函式呼叫棧指標和呼叫棧深度,backtrace_symbols可以將呼叫棧指標轉化為字串資訊。詳見backtraces或在linux命令列執行命令man backtrace.
測試平台
linux核心版本:linux version 4.15.0-45-generic (buildd@lcy01-amd64-027)
gcc版本:gcc version 5.4.0 20160609
ubuntu版本:ubuntu 16.04.5 lts
**1 // created time: 2019-03-08 09:48:30
2 // modified time: 2019-03-08 10:45:25
3 4 #include
5 #include
6 7 #define max_depth (20)
8 9 void func0(void);
10 void func1(void);
11 void func2(void);
12 void print_stackframe(void);
13
14 void print_stackframe(void)
15 {
16 void * buffer[max_depth];
17 int depth = backtrace(buffer, max_depth);
18 char ** func_names = backtrace_symbols(buffer, depth);
19 for (int i=0; i編譯執行
gcc print_stackframe.c -o print_stackframe -rdynamic
執行可執行檔案:
./print_stackframe
結果
在應用程式中宿主MEF
在應用程式中宿主mef其實非常簡單,只需要建立乙個組合容器物件 compositioncontainer 的例項,然後將需要組合的部件 parts 和當前宿主程式新增到容器中即可。首先需要新增mef框架的引用,既system.componentmodel.composition.dll,詳細如下 塊...
在應用程式中操作NorFlash
相對於操作nandflash,操作norflash相對簡單,因為基本不需要考慮壞塊,norflash也沒有oob區域,也跟ecc沒有一毛錢關係。它的讀寫擦除相對容易。int dealwithnor unsigned int allsize 0 define maxpartitions 40 stru...
在tomcat web應用程式
在tomcat web應用程式 某人曰 在沒其他工具的情況下不會手動新增web應用的程式設計師是乙個菜鳥 軍哥曰 乙個不會使用好的ide開發工具的程式設計師絕對不是乙個好的程式設計師 開發web應用時,不同型別的檔案有嚴格的存放規則,否則不僅可能會使web應用無法訪問,還會導致web伺服器啟動報錯。...