... | ... | @@ -23,17 +23,39 @@ $ sudo opreport |
|
|
```
|
|
|
|
|
|
|
|
|
check that the program you ran is at the top of the profile somewhere. Sometimes for me it doesn't appear, and have to run it again. To see a list of possible `<event>`s, use
|
|
|
|
|
|
```wiki
|
|
|
$ opcontrol --list-events
|
|
|
```
|
|
|
check that the program you ran is at the top of the profile somewhere. Sometimes for me it doesn't appear, and have to run it again. To see a list of possible `<event>`s, use `$ opcontrol --list-events`.
|
|
|
|
|
|
|
|
|
Then to annotate the source:
|
|
|
|
|
|
```wiki
|
|
|
$ sudo opannotate --source <program> >&! log}}}
|
|
|
$ sudo opannotate --source <program> >&! log
|
|
|
```
|
|
|
|
|
|
|
|
|
lists the contents of source files in order of importance. Alternatively use --output-dir to put the source files in a directory, but then
|
|
|
you don't get to find out which are the important ones.
|
|
|
``` |
|
|
\ No newline at end of file |
|
|
|
|
|
## Things to be aware of
|
|
|
|
|
|
- You might think that you could use the `-fvia-C -optc-g` options to force GHC to export C-source-level debugging symbols. The Evil Mangler script that post-processes the `.s` file output by `gcc` does not understand the debug annotations added by `gcc`'s `-g` flag, and so `-optc-g` will not work. You can, however, get GHC to output assembly-level debugging symbols by using `-opta-g`. You'll probably also want to use the `-keep-s-files` option so that `opannotate` can get at the relevant `.s` files.
|
|
|
|
|
|
- Suppose that you do
|
|
|
|
|
|
```wiki
|
|
|
$ sudo opcontrol --setup --event=<eventname>:<count>
|
|
|
```
|
|
|
|
|
|
and receive an error message that "Count `<count>` for event `<eventname>` is below the minimum." If you check the minimum value for
|
|
|
`<eventname>` using the `--list-events` option and see that `<count>` is in fact not below the purported minimum count, then you may have passed
|
|
|
in a non-zero value for `--callgraph` option. When doing callgraph profiling, OProfile requires that the sample count be at least 15 times the
|
|
|
minimum.
|
|
|
`opcontrol --status` will show you if callgraph is currently set. To reset it, make sure the oprofile daemon is stopped and reset the callgraph
|
|
|
value:
|
|
|
|
|
|
```wiki
|
|
|
$ sudo opcontrol --shutdown
|
|
|
$ sudo opcontrol --callgraph=0
|
|
|
```
|
|
|
|
|
|
Now you can re-run your profiling and the original `<count>` should work. |