11use crate :: dap:: { self , Capabilities , DapMessage , Event , ProtocolMessage , Response } ;
2- use crate :: dap_types:: { self , Breakpoint , SetBreakpointsArguments , SetBreakpointsResponseBody , Source } ;
2+ use crate :: dap_types;
33
44use crate :: db:: Db ;
55use crate :: handler:: { Handler , TraceKind } ;
66use crate :: paths:: CODETRACER_PATHS ;
77use crate :: rr_dispatcher:: CtRRArgs ;
88use crate :: task:: {
9- gen_task_id , Action , CallSearchArg , CalltraceLoadArgs , CollapseCallsArgs , CtLoadFlowArguments ,
9+ Action , CallSearchArg , CalltraceLoadArgs , CollapseCallsArgs , CtLoadFlowArguments ,
1010 CtLoadLocalsArguments , FunctionLocation , LoadHistoryArg , LocalStepJump , Location , ProgramEvent , RunTracepointsArg ,
11- SourceCallJumpTarget , SourceLocation , StepArg , Task , TaskKind , TracepointId , UpdateTableArgs ,
11+ SourceCallJumpTarget , SourceLocation , StepArg , TracepointId , UpdateTableArgs ,
1212} ;
1313
1414use crate :: trace_processor:: { load_trace_data, load_trace_metadata, TraceProcessor } ;
@@ -20,7 +20,7 @@ use crate::transport::{DapResult, WorkerTransport};
2020
2121use log:: { info, warn} ;
2222use serde_json:: json;
23- use std:: collections:: { HashMap , HashSet } ;
23+ // use std::collections::{HashMap, HashSet};
2424use std:: error:: Error ;
2525use std:: fmt;
2626
@@ -200,6 +200,7 @@ fn handle_request<T: DapTransport>(
200200 "stackTrace" => handler. stack_trace ( req. clone ( ) , req. load_args :: < dap_types:: StackTraceArguments > ( ) ?) ?,
201201 "variables" => handler. variables ( req. clone ( ) , req. load_args :: < dap_types:: VariablesArguments > ( ) ?) ?,
202202 "restart" => handler. run_to_entry ( req. clone ( ) ) ?,
203+ "setBreakpoints" => handler. set_breakpoints ( req. clone ( ) , req. load_args :: < dap_types:: SetBreakpointsArguments > ( ) ?) ?,
203204 "ct/load-locals" => handler. load_locals ( req. clone ( ) , req. load_args :: < CtLoadLocalsArguments > ( ) ?) ?,
204205 "ct/update-table" => handler. update_table ( req. clone ( ) , req. load_args :: < UpdateTableArgs > ( ) ?) ?,
205206 "ct/event-load" => handler. event_load ( req. clone ( ) ) ?,
@@ -250,7 +251,6 @@ fn handle_request<T: DapTransport>(
250251
251252pub struct Ctx {
252253 pub seq : i64 ,
253- pub breakpoints : HashMap < String , HashSet < i64 > > ,
254254 pub handler : Option < Handler > ,
255255 pub received_launch : bool ,
256256 pub launch_trace_folder : PathBuf ,
@@ -264,7 +264,6 @@ impl Default for Ctx {
264264 fn default ( ) -> Self {
265265 Self {
266266 seq : 1i64 ,
267- breakpoints : HashMap :: new ( ) ,
268267 handler : None ,
269268 received_launch : false ,
270269 launch_trace_folder : PathBuf :: from ( "" ) ,
@@ -322,92 +321,6 @@ pub fn handle_message<T: DapTransport>(
322321 ctx. seq += 1 ;
323322 transport. send ( & event) ?;
324323 }
325- DapMessage :: Request ( req) if req. command == "setBreakpoints" => {
326- let mut results = Vec :: new ( ) ;
327- let args = req. load_args :: < SetBreakpointsArguments > ( ) ?;
328- if let Some ( path) = args. source . path . clone ( ) {
329- let lines: Vec < i64 > = if let Some ( bps) = args. breakpoints {
330- bps. into_iter ( ) . map ( |b| b. line ) . collect ( )
331- } else {
332- args. lines . unwrap_or_default ( )
333- } ;
334- let entry = ctx. breakpoints . entry ( path. clone ( ) ) . or_default ( ) ;
335- if let Some ( h) = ctx. handler . as_mut ( ) {
336- h. clear_breakpoints ( ) ;
337- for line in lines {
338- entry. insert ( line) ;
339- let _ = h. add_breakpoint (
340- SourceLocation {
341- path : path. clone ( ) ,
342- line : line as usize ,
343- } ,
344- Task {
345- kind : TaskKind :: AddBreak ,
346- id : gen_task_id ( TaskKind :: AddBreak ) ,
347- } ,
348- ) ;
349- results. push ( Breakpoint {
350- id : None ,
351- verified : true ,
352- message : None ,
353- source : Some ( Source {
354- name : args. source . name . clone ( ) ,
355- path : Some ( path. clone ( ) ) ,
356- source_reference : args. source . source_reference ,
357- presentation_hint : None ,
358- origin : None ,
359- sources : None ,
360- adapter_data : None ,
361- checksums : None ,
362- } ) ,
363- line : Some ( line) ,
364- column : None ,
365- end_line : None ,
366- end_column : None ,
367- instruction_reference : None ,
368- offset : None ,
369- reason : None ,
370- } ) ;
371- }
372- }
373- } else {
374- let lines = args
375- . breakpoints
376- . unwrap_or_default ( )
377- . into_iter ( )
378- . map ( |b| b. line )
379- . collect :: < Vec < _ > > ( ) ;
380- for line in lines {
381- results. push ( Breakpoint {
382- id : None ,
383- verified : false ,
384- message : Some ( "missing source path" . to_string ( ) ) ,
385- source : None ,
386- line : Some ( line) ,
387- column : None ,
388- end_line : None ,
389- end_column : None ,
390- instruction_reference : None ,
391- offset : None ,
392- reason : None ,
393- } ) ;
394- }
395- }
396- let body = SetBreakpointsResponseBody { breakpoints : results } ;
397- let resp = DapMessage :: Response ( Response {
398- base : ProtocolMessage {
399- seq : ctx. seq ,
400- type_ : "response" . to_string ( ) ,
401- } ,
402- request_seq : req. base . seq ,
403- success : true ,
404- command : "setBreakpoints" . to_string ( ) ,
405- message : None ,
406- body : serde_json:: to_value ( body) ?,
407- } ) ;
408- ctx. seq += 1 ;
409- transport. send ( & resp) ?;
410- }
411324 DapMessage :: Request ( req) if req. command == "launch" => {
412325 ctx. received_launch = true ;
413326 let args = req. load_args :: < dap:: LaunchRequestArguments > ( ) ?;
0 commit comments