[lldb/Test] Assert that no targets or modules remain after a test completes.

The reproducer intentionally leak every object allocated during replay,
which means that modules never get orphaned. If this were to happen for
another reason, we might not be testing what we think we are. Assert
that there are no targets left at the end of a test and that the global
module cache is empty in the non-reproducer scenario.

Differential revision: https://reviews.llvm.org/D81612
This commit is contained in:
Jonas Devlieghere
2020-06-12 15:12:55 -07:00
parent bb2f6f66c7
commit da601ea731
4 changed files with 30 additions and 1 deletions

View File

@@ -683,6 +683,13 @@ lldb::SBAddress SBModule::GetObjectFileEntryPointAddress() const {
return LLDB_RECORD_RESULT(sb_addr);
}
uint32_t SBModule::GetNumberAllocatedModules() {
LLDB_RECORD_STATIC_METHOD_NO_ARGS(uint32_t, SBModule,
GetNumberAllocatedModules);
return Module::GetNumberAllocatedModules();
}
namespace lldb_private {
namespace repro {
@@ -757,6 +764,8 @@ void RegisterMethods<SBModule>(Registry &R) {
GetObjectFileHeaderAddress, ());
LLDB_REGISTER_METHOD_CONST(lldb::SBAddress, SBModule,
GetObjectFileEntryPointAddress, ());
LLDB_REGISTER_STATIC_METHOD(uint32_t, SBModule, GetNumberAllocatedModules,
());
}
}