---
name: "moncontrol"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["freebsd", "macos"]
url: "https://new.carta.tech/moncontrol"
---

# moncontrol(3)

control execution profile

## NAME

**moncontrol**, **monstartup** – control execution profile

## SYNOPSIS

**moncontrol**(*int mode*);

**monstartup**(*u\_long \*lowpc*, *u\_long \*highpc*);

## DESCRIPTION

An executable program compiled using the **-pg** option to [cc(1)](/cc/1.md) automatically includes calls to collect statistics for the [gprof(1)](/gprof/1.md) call-graph execution profiler. In typical operation, profiling begins at program startup and ends when the program calls exit. When the program exits, the profiling data are written to the file *gmon.out*, then [gprof(1)](/gprof/1.md) can be used to examine the results.

**moncontrol**() selectively controls profiling within a program. When the program starts, profiling begins. To stop the collection of histogram ticks and call counts use **moncontrol**(*0*); to resume the collection of histogram ticks and call counts use **moncontrol**(*1*). This feature allows the cost of particular operations to be measured. Note that an output file will be produced on program exit regardless of the state of  **moncontrol**().

Programs that are not loaded with **-pg** may selectively collect profiling statistics by calling **monstartup**() with the range of addresses to be profiled. *lowpc* and *highpc* specify the address range that is to be sampled; the lowest address sampled is that of *lowpc* and the highest is just below *highpc*. Only functions in that range that have been compiled with the  **-pg** option to [cc(1)](/cc/1.md) will appear in the call graph part of the output; however, all functions in that address range will have their execution time measured. Profiling begins on return from **monstartup**().

## FILES

- *gmon.out* *execution* *data* *file*

  ## SEE ALSO

[cc(1)](/cc/1.md), [gprof(1)](/gprof/1.md), [profil(2)](/profil/2.md)
