(
&mut self,
gdb_request: &GdbRequestPayload,
cpu_id: usize,
)
| 3130 | |
| 3131 | #[cfg(feature = "guest_debug")] |
| 3132 | pub fn debug_request( |
| 3133 | &mut self, |
| 3134 | gdb_request: &GdbRequestPayload, |
| 3135 | cpu_id: usize, |
| 3136 | ) -> Result<GdbResponsePayload> { |
| 3137 | use GdbRequestPayload::*; |
| 3138 | match gdb_request { |
| 3139 | SetSingleStep(single_step) => { |
| 3140 | self.set_guest_debug(cpu_id, &[], *single_step) |
| 3141 | .map_err(Error::Debug)?; |
| 3142 | } |
| 3143 | SetHwBreakPoint(addrs) => { |
| 3144 | self.set_guest_debug(cpu_id, addrs, false) |
| 3145 | .map_err(Error::Debug)?; |
| 3146 | } |
| 3147 | Pause => { |
| 3148 | self.debug_pause().map_err(Error::Debug)?; |
| 3149 | } |
| 3150 | Resume => { |
| 3151 | self.debug_resume().map_err(Error::Debug)?; |
| 3152 | } |
| 3153 | ReadRegs => { |
| 3154 | let regs = self.read_regs(cpu_id).map_err(Error::Debug)?; |
| 3155 | return Ok(GdbResponsePayload::RegValues(Box::new(regs))); |
| 3156 | } |
| 3157 | WriteRegs(regs) => { |
| 3158 | self.write_regs(cpu_id, regs).map_err(Error::Debug)?; |
| 3159 | } |
| 3160 | ReadMem(vaddr, len) => { |
| 3161 | let guest_memory = self.memory_manager.lock().as_ref().unwrap().guest_memory(); |
| 3162 | let mem = self |
| 3163 | .read_mem(&guest_memory, cpu_id, *vaddr, *len) |
| 3164 | .map_err(Error::Debug)?; |
| 3165 | return Ok(GdbResponsePayload::MemoryRegion(mem)); |
| 3166 | } |
| 3167 | WriteMem(vaddr, data) => { |
| 3168 | let guest_memory = self.memory_manager.lock().as_ref().unwrap().guest_memory(); |
| 3169 | self.write_mem(&guest_memory, cpu_id, vaddr, data) |
| 3170 | .map_err(Error::Debug)?; |
| 3171 | } |
| 3172 | ActiveVcpus => { |
| 3173 | let active_vcpus = self.active_vcpus(); |
| 3174 | return Ok(GdbResponsePayload::ActiveVcpus(active_vcpus)); |
| 3175 | } |
| 3176 | } |
| 3177 | Ok(GdbResponsePayload::CommandComplete) |
| 3178 | } |
| 3179 | |
| 3180 | #[cfg(all(target_arch = "x86_64", feature = "guest_debug"))] |
| 3181 | fn get_dump_state( |
no test coverage detected