新聞中心
想必用過C++編程語言的開發(fā)人員會發(fā)現(xiàn),這一應(yīng)用廣泛的計算機應(yīng)用語言確實比較復(fù)雜,要想完全弄清其中的功能特點,是一個非常艱巨的任務(wù)。在這篇文章中我們先來了解一下C++ profiler的簡單用法。#t#

創(chuàng)新互聯(lián)公司服務(wù)項目包括察雅網(wǎng)站建設(shè)、察雅網(wǎng)站制作、察雅網(wǎng)頁制作以及察雅網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,察雅網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到察雅省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
自從VC6以后,C++ profile功能便從Team Server Editions以外的版本中去掉了,如果沒有此版本的VC,只能自己動手了。這是另一種使用Profile的方法,根據(jù)MSDN關(guān)于/callcap 的說明,編譯WinCE應(yīng)用程序時可以使用這個開關(guān),試過后在Win32平臺上也可以。這里需要注意的是在_CAP函數(shù)中,***不修改寄存器,那樣可能導(dǎo)致被調(diào)用的函數(shù)產(chǎn)生錯誤。
另外,如果直接把函數(shù)實現(xiàn)和調(diào)試的程序放在一個項目中編譯,將會使CAP函數(shù)產(chǎn)生遞歸調(diào)用而導(dǎo)致堆棧溢出,處理方法是在一個靜態(tài)庫中不使用/callcap編譯,然后再聯(lián)接到調(diào)試的程序中。這種方式調(diào)試函數(shù)仍然不太方便,只能知道一個函數(shù)指針,無法知道函數(shù)名稱。
- extern "C" {
- //void __stdcall _CAP_Profiling(void* func);
- //void __stdcall _CAP_Start_Profiling(void* func, void* called);
- //void __stdcall _CAP_End_Profiling(void* func);
- void __stdcall _CAP_Enter_Function(void* func);
- void __stdcall _CAP_Exit_Function(void* func);
- }
- void __stdcall _CAP_Enter_Function(void* func)
- {
- __asm
- {
- pushad //堆棧中按順序壓入寄存器: EAX,ECX,EDX,EBX,ESP,EBP,ESI和EDI
- pushfd
- }
- //這里添加代碼
- __asm
- {
- popfd
- popad
- }
- }
- void __stdcall _CAP_Exit_Function(void* func)
- {
- __asm
- {
- pushad
- pushfd
- }
- __asm
- {
- popfd
- popad
- }
- }
以上就是對C++ profile的相關(guān)介紹。
網(wǎng)站題目:C++profile應(yīng)用技巧分析
文章路徑:http://m.5511xx.com/article/cdcojod.html


咨詢
建站咨詢
