MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / debug_request

Method debug_request

vmm/src/vm.rs:3132–3178  ·  view source on GitHub ↗
(
        &mut self,
        gdb_request: &GdbRequestPayload,
        cpu_id: usize,
    )

Source from the content-addressed store, hash-verified

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(

Callers 1

control_loopMethod · 0.80

Calls 10

newFunction · 0.85
set_guest_debugMethod · 0.45
debug_pauseMethod · 0.45
debug_resumeMethod · 0.45
read_regsMethod · 0.45
write_regsMethod · 0.45
guest_memoryMethod · 0.45
read_memMethod · 0.45
write_memMethod · 0.45
active_vcpusMethod · 0.45

Tested by

no test coverage detected