UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PrintObjectUtils.cpp File Reference
#include "PrintObjectUtils.h"
#include "Containers/Set.h"
#include "HAL/IConsoleManager.h"
#include "UObject/Object.h"
#include "UObject/Class.h"
#include "UObject/UnrealType.h"
#include "UObject/UObjectHash.h"
#include "Misc/StringBuilder.h"

Namespaces

namespace  UE
 

Functions

void UE::PrintObjectsInOuter (UObject *Object, EPrintObjectFlag Flags, FOutputDevice *InOutputDevice)
 
void UE::PrintObjectsWithName (const TCHAR *ObjectName, EPrintObjectFlag Flags, FOutputDevice *InOutputDevice)
 
void UE::PrintStructProperties (UStruct *Struct, void *StructData, EPrintObjectFlag Flags, FOutputDevice *InOutputDevice)
 
void UE::PrintObjectProperties (UObject *Object, EPrintObjectFlag Flags, FOutputDevice *InOutputDevice)
 
void UE::PrintObjectArchetype (UObject *Object, EPrintObjectFlag Flags, FOutputDevice *InOutputDevice)
 
void UE::PrintObjectIDO (UObject *Object, EPrintObjectFlag Flags, FOutputDevice *InOutputDevice)
 
void UE::PrintClassDefaultObject (const UClass *Class, EPrintObjectFlag Flags, FOutputDevice *InOutputDevice)
 
void UE::PrintStructHierarchy (const UStruct *Struct, EPrintObjectFlag Flags, FOutputDevice *InOutputDevice)
 

Variables

FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintObjectsInOuter (TEXT("Obj.DumpObjectsInOuter"), TEXT("Lists all objects under a specified parent (the parent object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel)."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ObjectPath, Flags);UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath);if(Object) { PrintObjectsInOuter(Object, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintObjectsInOuter: failed to find any objects for path: '%s'"), *ObjectPath);} } else { OutputDevice.Logf(TEXT("PrintObjectsInOuter: no object path specified (example usage: Obj.DumpObjectsInOuter /MyLevel/MyLevel.MyLevel:PersistentLevel)"));LogHelp(OutputDevice);} }))
 
FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintObjectsWithName (TEXT("Obj.DumpObjectsWithName"), TEXT("Lists all objects with a given name."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectName;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ObjectName, Flags);PrintObjectsWithName(*ObjectName, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintObjectsWithName: no object name specified (example usage: Obj.DumpObjectsWithName PersistentLevel)"));LogHelp(OutputDevice);} }))
 
FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintObjectProperties (TEXT("Obj.DumpProperties"), TEXT("Lists the properties of an object (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor). Pass InitState=true to iclude the properties' initialization state."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ObjectPath, Flags);UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath);if(Object) { PrintObjectProperties(Object, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintObjectProperties: failed to find any objects for path: '%s'"), *ObjectPath);} } else { OutputDevice.Logf(TEXT("PrintObjectProperties: no object path specified (example usage: Obj.DumpProperties /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)"));LogHelp(OutputDevice);} }))
 
FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintObjectArchetype (TEXT("Obj.DumpArchetype"), TEXT("Outputs an object's archetype (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ObjectPath, Flags);UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath);if(Object) { PrintObjectArchetype(Object, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintObjectArchetype: failed to find any objects for path: '%s'"), *ObjectPath);} } else { OutputDevice.Logf(TEXT("PrintObjectArchetype: no object path specified (example usage: Obj.DumpArchetype /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)"));LogHelp(OutputDevice);} }))
 
FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintObjectIDO (TEXT("Obj.DumpIDO"), TEXT("Outputs an object's IDO (Instance Data Object) (the object must be specified as a name or path, e.g., /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ObjectPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ObjectPath, Flags);UObject *Object=FindFirstObjectSafe< UObject >(*ObjectPath);if(Object) { PrintObjectIDO(Object, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintObjectIDO: failed to find any objects for path: '%s'"), *ObjectPath);} } else { OutputDevice.Logf(TEXT("PrintObjectIDO: no object path specified (example usage: Obj.DumpArchetype /MyLevel/MyLevel.MyLevel:PersistentLevel.MyActor)"));LogHelp(OutputDevice);} }))
 
FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintCDO (TEXT("Obj.DumpCDO"), TEXT("Outputs a class' Class Default Object."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString ClassPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, ClassPath, Flags);UClass *Class=FindFirstObjectSafe< UClass >(*ClassPath);if(Class) { PrintClassDefaultObject(Class, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintClassDefaultObject: failed to find any classes for path: '%s'"), *ClassPath);} } else { OutputDevice.Logf(TEXT("PrintClassDefaultObject: no class name or path specified (example usage: Obj.DumpCDO MyActor)"));LogHelp(OutputDevice);} }))
 
FAutoConsoleCommandWithArgsAndOutputDevice UE::CVarCommandPrintStructHierarchy (TEXT("Obj.DumpStructHierarchy"), TEXT("Outputs a struct (or class) type hierarchy."), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateLambda([](const TArray< FString > &Args, FOutputDevice &OutputDevice) { if(Args.Num() > 0) { FString StructPath;EPrintObjectFlag Flags;ParseObjectIdAndFlags(Args, StructPath, Flags);UStruct *Struct=FindFirstObjectSafe< UStruct >(*StructPath);if(Struct) { PrintStructHierarchy(Struct, Flags, &OutputDevice);} else { OutputDevice.Logf(TEXT("PrintStructHierarchy: failed to find any types for path: '%s'"), *StructPath);} } else { OutputDevice.Logf(TEXT("PrintStructHierarchy: no struct name or path specified (example usage: Obj.DumpStructHierarchy MyActor)"));LogHelp(OutputDevice);} }))