moncontrol 子例程
用途
在 monitor 子例程初始化后启动并停止执行概要分析。
库
标准 C 库 (libc.a)
语法
#include <mon.h> int moncontrol ( Mode)
int Mode;
int Mode;
描述
moncontrol 子例程在 monitor 子例程初始化概要分析后启动并停止概要分析。 它可以与 -p或-pg剖析一起使用。 当 moncontrol 停止概要分析时,不会生成任何输出数据文件。 当 monitor 子例程已启动概要分析并调用 exit 子例程时,或者当使用值 0 调用 monitor 子例程时,将停止概要分析并生成输出文件, 而不考虑由 moncontrol 子例程设置的概要分析状态。
moncontrol 子例程按以下顺序检查全局数据和参数数据:
- 当'_mondata.prof_type全局变量既不是'-1(-p'剖析定义)也不是 +1 ('-页码剖析定义)时,将不执行任何操作,返回 0,并认为函数已完成。
该全局变量在mcrt0.o文件中设置为-1,在gcrt0.o文件中设置为+1,使用crt0.o文件时默认为 0。
- 当 Mode 参数为 0 时,将停止概要分析。 对于任何其他值,将启动概要分析。
在对 profil 子例程的调用中使用以下全局变量:
项 描述 _mondata.ProfBuf 缓冲区地址 _mondata.ProfBufSiz 缓冲区大小/多范围标志 _mondata.ProfLoPC Hist 缓冲区的 PC 偏移-I/O 限制 _mondata.ProfScale PC 缩放/计算缩放标志。
这些变量由 monitor 子例程在每次调用它以启动概要分析时进行初始化。
参数
| 项 | 描述 |
|---|---|
| 方式 | 指定是启动 (恢复) 还是停止概要分析。 |
返回值
moncontrol 子例程返回概要分析的先前状态。 当先前状态为 STOPPED 时,将返回 0。 当先前状态为 STARTED 时,将返回 1。
错误代码
当moncontrol子程序检测到调用profil子程序出错时,将返回-1。