想必用过C++编程语言的开发人员会发现,这一应用广泛的计算机应用语言确实比较复杂,要想完全弄清其中的功能特点,是一个非常艰巨的任务。在这篇文章中我们先来了解一下C++ profiler的简单用法。#t#
创新互联公司服务项目包括察雅网站建设、察雅网站制作、察雅网页制作以及察雅网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,察雅网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到察雅省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
自从VC6以后,C++ profile功能便从Team Server Editions以外的版本中去掉了,如果没有此版本的VC,只能自己动手了。这是另一种使用Profile的方法,根据MSDN关于/callcap 的说明,编译WinCE应用程序时可以使用这个开关,试过后在Win32平台上也可以。这里需要注意的是在_CAP函数中,***不修改寄存器,那样可能导致被调用的函数产生错误。
另外,如果直接把函数实现和调试的程序放在一个项目中编译,将会使CAP函数产生递归调用而导致堆栈溢出,处理方法是在一个静态库中不使用/callcap编译,然后再联接到调试的程序中。这种方式调试函数仍然不太方便,只能知道一个函数指针,无法知道函数名称。
- 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的相关介绍。
新闻名称:C++profile应用技巧分析
网站链接:http://www.mswzjz.cn/qtweb/news43/96743.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能