Hi Kate. Thanks for the response.
The start of the log looks like below, a bit redacted but basically the same.
The first Id on line 4 is the VF file that calls the remote action from JS. The Id near the end of this is the Apex controller that holds the remote action code. I did just find that if I replace that first VF Id with the Apex Id, the debugger works correctly!
42.0 APEX_CODE,FINEST;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;NBA,INFO;SYSTEM,FINE;VALIDATION,INFO;VISUALFORCE,FINE;WAVE,INFO;WORKFLOW,INFO
21:02:02.0 (99607)|USER_INFO|[EXTERNAL]|00560000003gbE1|me@client.com.sand|Eastern Standard Time|GMT-04:00
21:02:02.0 (156669)|EXECUTION_STARTED
21:02:02.0 (162119)|CODE_UNIT_STARTED|[EXTERNAL]|06660000000PzfL|VFRemote: TheController invoke(UpdatePreference)
21:02:02.0 (183837)|SYSTEM_MODE_ENTER|true
21:02:02.0 (1072532)|VARIABLE_SCOPE_BEGIN|[22]|TheController.var1|Boolean|false|true
21:02:02.0 (1542230)|VARIABLE_SCOPE_BEGIN|[19]|TheController.var2|Map<String,List<customType>>|true|true
21:02:02.0 (1602847)|VARIABLE_SCOPE_BEGIN|[25]|TheController.var3|List<String>|true|true
21:02:02.0 (1736207)|HEAP_ALLOCATE|[72]|Bytes:3
21:02:02.0 (1794477)|HEAP_ALLOCATE|[77]|Bytes:152
21:02:02.0 (1814984)|HEAP_ALLOCATE|[342]|Bytes:408
21:02:02.0 (1834774)|HEAP_ALLOCATE|[355]|Bytes:408
21:02:02.0 (1854566)|HEAP_ALLOCATE|[467]|Bytes:48
21:02:02.0 (1887855)|HEAP_ALLOCATE|[139]|Bytes:6
21:02:02.0 (1912765)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:25
21:02:02.0 (1923373)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:1212
21:02:02.0 (1929117)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:286
21:02:02.0 (1934961)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:163
21:02:02.0 (1960199)|METHOD_ENTRY|[1]|01p60000000HxEu|TheController.TheController()
21:02:02.0 (1974174)|STATEMENT_EXECUTE|[1]
21:02:02.0 (1981731)|STATEMENT_EXECUTE|[1]
21:02:02.0 (2015263)|HEAP_ALLOCATE|[50]|Bytes:5
21:02:02.0 (2048647)|HEAP_ALLOCATE|[56]|Bytes:5