Skip to content

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:

AAndromedaSalvageSpawnPoint::BeginPlay

Then confirm pickup:

AAndromedaCharacter::InteractInput
UAndromedaCarryComponent::TryPickUpTarget

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.