Mercurial > hg
changeset 46140:ec14c37958ec
rust: document how to enable debug information in optimized builds
This is particularly useful when profiling.
Differential Revision: https://phab.mercurial-scm.org/D9625
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Thu, 17 Dec 2020 12:28:39 +0100 |
parents | 3ca5ca380a34 |
children | 41733a1c3532 |
files | .hgignore rust/README.rst |
diffstat | 2 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore Mon Dec 14 18:09:37 2020 -0800 +++ b/.hgignore Thu Dec 17 12:28:39 2020 +0100 @@ -64,6 +64,10 @@ # Generated wheels wheelhouse/ +syntax: rootglob +# See Profiling in rust/README.rst +.cargo/config + syntax: regexp ^\.pc/ ^\.(pydev)?project
--- a/rust/README.rst Mon Dec 14 18:09:37 2020 -0800 +++ b/rust/README.rst Thu Dec 17 12:28:39 2020 +0100 @@ -40,7 +40,7 @@ You might want to check the `features` section in ``hg-cpython/Cargo.toml``. It may contain features that might be interesting to try out. -To use features from the Makefile, use the `HG_RUST_FEATURES` environment +To use features from the Makefile, use the `HG_RUST_FEATURES` environment variable: for instance `HG_RUST_FEATURES="some-feature other-feature"` Profiling @@ -51,6 +51,14 @@ indicate why the rust code cannot be used (say, using lookarounds in hgignore). +Creating a ``.cargo/config`` file with the following content enables +debug information in optimized builds. This make profiles more informative +with source file name and line number for Rust stack frames and +(in some cases) stack frames for Rust functions that have been inlined. + + [profile.release] + debug = true + ``py-spy`` (https://github.com/benfred/py-spy) can be used to construct a single profile with rust functions and python functions (as opposed to ``hg --profile``, which attributes time spent in rust @@ -58,6 +66,11 @@ as opposed to tools for native code like ``perf``, which attribute time to the python interpreter instead of python functions). +Example usage: + + $ make PURE=--rust local # Don't forget to recompile after a code change + $ py-spy record --native --output /tmp/profile.svg -- ./hg ... + Developing Rust ===============