Visual C++ Profile的简单使用方法
2008-07-19 01:45
363 查看
上次说到C++函数计时,但是自从VC6以后,Profile功能便从Team Server Editions以外的版本中去掉了,如果没有此版本的VC,只能自己动手了。这是另一种使用Profile的方法,根据MSDN关于/callcap 的说明,编译WinCE应用程序时可以使用这个开关,试过后在Win32平台上也可以。这里需要注意的是在_CAP函数中,最好不修改寄存器,那样可能导致被调用的函数产生错误。参考:
http://www.google.com/codesearch?hl=zh-CN&q=/callcap+show:XEUTuTjJJm4:ODErFHofTDk:XEUTuTjJJm4&sa=N&cd=1&ct=rc&cs_p=http://google-gears.googlecode.com/svn&cs_f=gears/base/common/trace_buffers_win32/trace_buffers_win32.cc#l91
另外,如果直接把函数实现和调试的程序放在一个项目中编译,将会使CAP函数产生递归调用而导致堆栈溢出,处理方法是在一个静态库中不使用/callcap编译,然后再联接到调试的程序中。这种方式调试函数仍然不太方便,只能知道一个函数指针,无法知道函数名称。
void __stdcall _CAP_Enter_Function(void* func)
void __stdcall _CAP_Exit_Function(void* func)
__asm
pushad
pushfd
}
__asm
popfd
popad
}
}
http://www.google.com/codesearch?hl=zh-CN&q=/callcap+show:XEUTuTjJJm4:ODErFHofTDk:XEUTuTjJJm4&sa=N&cd=1&ct=rc&cs_p=http://google-gears.googlecode.com/svn&cs_f=gears/base/common/trace_buffers_win32/trace_buffers_win32.cc#l91
另外,如果直接把函数实现和调试的程序放在一个项目中编译,将会使CAP函数产生递归调用而导致堆栈溢出,处理方法是在一个静态库中不使用/callcap编译,然后再联接到调试的程序中。这种方式调试函数仍然不太方便,只能知道一个函数指针,无法知道函数名称。
void __stdcall _CAP_Enter_Function(void* func)
void __stdcall _CAP_Exit_Function(void* func)
__asm
pushad
pushfd
}
__asm
popfd
popad
}
}
相关文章推荐
- VisualSVN Server的基本配置和简单的使用方法
- 用Visual C++.NET使用GDI+的一般方法
- OJ常用动态数据输入方法 C++简单的栈编写及使用
- c/c++ 使用boost库实现的一个简单判断字符串编码的方法
- STL 之 C++ Map容器的简单使用方法
- C/C++文件操作fopen/fscanf/ fprintf/ fclose简单使用方法
- C++ tinyxml的编译及简单使用方法
- VS平台简单的使用C++调用Python3.5的方法
- 在eclipse上面安装c++,比较使用的方法,简单使用
- 使用C++访问OPC Server的简单方法
- microsoft visual c++ 6.0中文版两种使用方法
- C++多线程Event方法使用及实例(简单汇总)
- C#调用C++方法,C#使用c++方法返回类或结构体
- 7,水晶报表的最简单使用方法
- 简单jquery图片预览插件的使用方法
- C/C++中libcurl的使用-Http GET方法使用详解
- QT-Linguist使用方法简单介绍
- c++ STL常用算法使用方法
- iOS 给【控制器添加统计】的简单、使用方法
- ViewPager的简单使用方法