Debugging Unreal C++ With Rider¶
This chapter is about debugging the current Andromeda C++ gameplay flow in Rider.
Unreal Editor is the running application. When you press Play in Editor, gameplay runs inside UnrealEditor.exe, so breakpoints attach to the editor process.
Normal Debugging Workflow¶
Open Andromeda.uproject in Rider.
Choose DebugGame Editor or Development Editor.
Place breakpoints in C++.
Launch Unreal Editor from Rider, or attach Rider to UnrealEditor.exe.
Press Play in Editor.
Trigger the gameplay path.
For active gameplay debugging, prefer DebugGame Editor. If Live Coding or breakpoints behave strangely, close the editor, build from Rider, and relaunch under the debugger.
Good Breakpoint Locations¶
Startup and input:
AAndromedaPlayerController::BeginPlay
AAndromedaCharacter::SetupPlayerInputComponent
AAndromedaCharacter::InteractInput
Focus and prompt:
AAndromedaCharacter::UpdateFocusedObject
AAndromedaCharacter::ResolveFocusableFromHit
AAndromedaHUD::HandleFocusedObjectChanged
AAndromedaHUD::RefreshFocusedPrompt
UAndromedaInteractPromptWidget::SetPrompt
Carry and placement:
AAndromedaCharacter::InteractInput
UAndromedaCarryComponent::TryPickUpTarget
AAndromedaSalvageItem::SetCarriedPhysicalState
UAndromedaPlacementModeComponent::RefreshPlacementPreview
UAndromedaPlacementModeComponent::EvaluatePlacementPreviewState
UAndromedaPlacementModeComponent::TryCommitPlacement
UAndromedaCarryComponent::TryPlaceHeldItemAtTransform
UAndromedaPlacementEventSubsystem::BroadcastPlacementCommitted
AAndromedaWorkstation::HandlePlacementCommitted
AAndromedaSalvageItem::SetReleasedPhysicalState_Implementation
Workstation spatial use:
UAndromedaWorkstationPlacementValidatorComponent::GetCorrectlyPlacedObjects
UAndromedaWorkstationPlacementValidatorComponent::IsObjectCorrectlyPlacedAtTransform
AAndromedaWorkstation::GetCorrectlyPlacedAcceptableObjects
AAndromedaWorkstation::FindSingleUsablePlacedObject
AAndromedaWorkstation::InteractWithScreen
Scanner and packaging:
AAndromedaScannerWorkstation::TryUsePlacedObject
AAndromedaScannerWorkstation::ShowScanResultOnScreen
AAndromedaPackagerWorkstation::CanAcceptObject
AAndromedaPackagerWorkstation::TryUsePlacedObject
AAndromedaSalvageItem::AssignRequiredPackage
UAndromedaStationDatabankComponent::TryRecordScanResult
Debugging One Complete Item Flow¶
First, confirm the item is spawned:
Then confirm pickup:
For workstation placement, debug placement mode rather than a workstation handoff:
UAndromedaPlacementModeComponent::RefreshPlacementPreview
UAndromedaPlacementModeComponent::EvaluatePlacementPreviewState
UAndromedaPlacementModeComponent::TryCommitPlacement
UAndromedaCarryComponent::TryPlaceHeldItemAtTransform
UAndromedaPlacementEventSubsystem::BroadcastPlacementCommitted
AAndromedaWorkstation::HandlePlacementCommitted
For scanner or packager screen use, aim at the screen and step through:
AAndromedaWorkstation::InteractWithScreen
UAndromedaWorkstationPlacementValidatorComponent::GetCorrectlyPlacedObjects
AAndromedaWorkstation::FindSingleUsablePlacedObject
AAndromedaScannerWorkstation::TryUsePlacedObject
AAndromedaPackagerWorkstation::TryUsePlacedObject
This confirms whether the workstation found zero items, one valid item, or multiple ambiguous items.
Useful Variables¶
When stopped at a breakpoint, inspect:
FocusedObject
CarryComponent
HeldItem
ItemData
StationDatabankComponent
CorrectlyPlacedObjects
CandidateObject
PlacementPreviewState
PreviewWorkstation
If ItemData is null, the salvage item Blueprint or Data Asset assignment is wrong. If StationDatabankComponent is null, inspect the native station component and owning-station wiring. If CorrectlyPlacedObjects is empty, inspect placement volume transforms, tags, collision, and whether the item overlaps a positive volume without touching an anti-volume.
Debugging Editor-Configured Values¶
Common Blueprint/default issues:
DefaultMappingContexts empty BP_PlayerController is missing IMC_Player.
InteractAction null BP_PlayerCharacter is missing IA_Interact.
InteractPromptWidgetClass null BP_AndromedaHUD is missing WBP_InteractPrompt.
ScannerScreen widget missing BP_ScannerWorkstation ScreenComponent is missing WBP_ScannerScreen or has not created its widget yet.
No workstation screen prompt No exactly-one usable spatial item is inside the workstation placement volumes, or the Screen component is not blocking Visibility.
Cannot place on workstation top Workstation mesh collision is missing, too coarse, or not blocking Visibility on the intended placement surface.
ItemData null Salvage item Blueprint is missing its Data Asset.
When this happens, first ask whether the value is meant to be configured in Blueprint Class Defaults.
When To Close The Editor Before Building¶
Close the editor and do a normal build when:
You changed reflected headers: UCLASS, USTRUCT, UENUM, UPROPERTY, or UFUNCTION.
You added or removed reflected properties/functions.
Live Coding reports a failure.
Breakpoints or symbols seem stale.
Blueprints do not see a newly added C++ property.
The editor behaves as if old code is still running.