Object Introspection (OI) enables on-demand, hierarchical profiling of objects in arbitrary C/C++ programs with no recompilation.
Go to file
Alastair Robertson bbc4cb822b Printer: Make prefix() [[nodiscard]] and fix bug printing Dummy nodes
Dummy and DummyAllocator nodes had been changed to use NodeIds, but
were still printed out in full when visited for a second time.

[[nodiscard]] prevents future bugs of this type by turning them into
compilation errors.

Example of the now-fixed bug:
    [1]  Container: std::map<int32_t, int32_t, DummySizedOperator<0, 0, 8>, std::allocator<std::pair<int32_t const, int32_t>>>
            Param
              Primitive: int32_t
            Param
              Primitive: int32_t
            Param
    [2]       Dummy [less<int>]
            Param
              ...
    [3]   Container: std::map<int32_t, int32_t, DummySizedOperator<0, 0, 8>, std::allocator<std::pair<int32_t const, int32_t>>>
            Param
              Primitive: int32_t
            Param
              Primitive: int32_t
            Param
              [2]
    Dummy [less<int>]
            Param
              ...

With this patch, the second "Dummy" line will not be printed.
2023-09-21 17:01:35 +01:00
.circleci Update to clang/llvm 15 (#342) 2023-09-14 06:02:32 -07:00
.github Add website deployment script 2022-12-20 08:40:51 -08:00
cmake Enable compiler warnings globally 2023-05-23 10:36:42 +01:00
examples clang-format: set BinPackParameters=false 2023-04-24 11:28:22 +02:00
extern drgn: elfutils: Implement 64-bits offsets reconstruction for CU/TU Index Table 2023-07-06 17:09:41 +01:00
include/oi static types: add consume function similar to delegate 2023-09-15 14:43:09 +01:00
oi Printer: Make prefix() [[nodiscard]] and fix bug printing Dummy nodes 2023-09-21 17:01:35 +01:00
resources Compile Time OIL for OIL v2 2023-08-30 04:28:02 -07:00
test codegen: generate enums as enum class 2023-09-20 18:13:45 +01:00
tools oilgen: add missing gflags header 2023-09-20 17:59:24 +01:00
types oil: change std::stack reference to a std::function (#345) 2023-09-14 16:57:45 +01:00
website Attempt to fix favicon 2023-09-05 20:01:42 +01:00
.clang-format clang-format: set BinPackParameters=false 2023-04-24 11:28:22 +02:00
.clang-tidy Initial commit 2022-12-19 06:37:51 -08:00
.editorconfig Initial commit 2022-12-19 06:37:51 -08:00
.git-blame-ignore-revs Initial commit 2022-12-19 06:37:51 -08:00
.gitignore Delete old files from test/ 2023-01-27 12:45:35 +00:00
.gitmodules drgn: add split dwarf support 2023-06-02 17:52:53 +02:00
CHANGELOG.md Initial commit 2022-12-19 06:37:51 -08:00
CMakeLists.txt Update to clang/llvm 15 (#342) 2023-09-14 06:02:32 -07:00
CODE_OF_CONDUCT.md Initial commit 2022-12-19 06:37:51 -08:00
CONTRIBUTING.md Initial commit 2022-12-19 06:37:51 -08:00
dev.oid.toml Implement new container for F14ValueMap 2023-09-08 16:31:36 +02:00
LICENSE Initial commit 2022-12-19 06:37:51 -08:00
oss.oid.toml Initial commit 2022-12-19 06:37:51 -08:00
README.md Display the logo (#116) 2023-03-31 10:48:18 +01:00

object-introspection

Matrix Chat

OI Logo

Object Introspection is a memory profiling technology for C++ objects. It provides the ability to dynamically instrument applications to capture the precise memory occupancy of entire object hierarchies including all containers and dynamic allocations. All this with no code modification or recompilation!

For more information on the technology and how to get started applying it to your applications please check out the Object Introspection website.

Join the Object Introspection community

See the CONTRIBUTING file for how to help out.

License

Object Introspection is licensed under the Apache 2.0 License.