Skip to content

Commit 025a739

Browse files
committed
dbg: add specific logging for each debug command error encountered
Signed-off-by: Doru Blânzeanu <[email protected]>
1 parent f8aff0d commit 025a739

File tree

2 files changed

+146
-16
lines changed

2 files changed

+146
-16
lines changed

src/hyperlight_host/src/hypervisor/hyperv_linux.rs

Lines changed: 73 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,19 +106,40 @@ mod debug {
106106
if let Some(debug) = self.debug.as_mut() {
107107
match req {
108108
DebugMsg::AddHwBreakpoint(addr) => Ok(DebugResponse::AddHwBreakpoint(
109-
debug.add_hw_breakpoint(&self.vcpu_fd, addr).is_ok(),
109+
debug
110+
.add_hw_breakpoint(&self.vcpu_fd, addr)
111+
.map_err(|e| {
112+
log::error!("Failed to add hw breakpoint: {:?}", e);
113+
114+
e
115+
})
116+
.is_ok(),
110117
)),
111118
DebugMsg::AddSwBreakpoint(addr) => Ok(DebugResponse::AddSwBreakpoint(
112119
debug
113120
.add_sw_breakpoint(&self.vcpu_fd, addr, dbg_mem_access_fn)
121+
.map_err(|e| {
122+
log::error!("Failed to add sw breakpoint: {:?}", e);
123+
124+
e
125+
})
114126
.is_ok(),
115127
)),
116128
DebugMsg::Continue => {
117-
debug.set_single_step(&self.vcpu_fd, false)?;
129+
debug.set_single_step(&self.vcpu_fd, false).map_err(|e| {
130+
log::error!("Failed to continue execution: {:?}", e);
131+
132+
e
133+
})?;
134+
118135
Ok(DebugResponse::Continue)
119136
}
120137
DebugMsg::DisableDebug => {
121-
self.disable_debug()?;
138+
self.disable_debug().map_err(|e| {
139+
log::error!("Failed to disable debugging: {:?}", e);
140+
141+
e
142+
})?;
122143

123144
Ok(DebugResponse::DisableDebug)
124145
}
@@ -128,14 +149,25 @@ mod debug {
128149
.map_err(|e| {
129150
new_error!("Error locking at {}:{}: {}", file!(), line!(), e)
130151
})?
131-
.get_code_offset()?;
152+
.get_code_offset()
153+
.map_err(|e| {
154+
log::error!("Failed to get code offset: {:?}", e);
155+
156+
e
157+
})?;
132158

133159
Ok(DebugResponse::GetCodeSectionOffset(offset as u64))
134160
}
135161
DebugMsg::ReadAddr(addr, len) => {
136162
let mut data = vec![0u8; len];
137163

138-
debug.read_addrs(&self.vcpu_fd, addr, &mut data, dbg_mem_access_fn)?;
164+
debug
165+
.read_addrs(&self.vcpu_fd, addr, &mut data, dbg_mem_access_fn)
166+
.map_err(|e| {
167+
log::error!("Failed to read from address: {:?}", e);
168+
169+
e
170+
})?;
139171

140172
Ok(DebugResponse::ReadAddr(data))
141173
}
@@ -144,27 +176,60 @@ mod debug {
144176

145177
debug
146178
.read_regs(&self.vcpu_fd, &mut regs)
179+
.map_err(|e| {
180+
log::error!("Failed to read registers: {:?}", e);
181+
182+
e
183+
})
147184
.map(|_| DebugResponse::ReadRegisters(regs))
148185
}
149186
DebugMsg::RemoveHwBreakpoint(addr) => Ok(DebugResponse::RemoveHwBreakpoint(
150-
debug.remove_hw_breakpoint(&self.vcpu_fd, addr).is_ok(),
187+
debug
188+
.remove_hw_breakpoint(&self.vcpu_fd, addr)
189+
.map_err(|e| {
190+
log::error!("Failed to remove hw breakpoint: {:?}", e);
191+
192+
e
193+
})
194+
.is_ok(),
151195
)),
152196
DebugMsg::RemoveSwBreakpoint(addr) => Ok(DebugResponse::RemoveSwBreakpoint(
153197
debug
154198
.remove_sw_breakpoint(&self.vcpu_fd, addr, dbg_mem_access_fn)
199+
.map_err(|e| {
200+
log::error!("Failed to remove sw breakpoint: {:?}", e);
201+
202+
e
203+
})
155204
.is_ok(),
156205
)),
157206
DebugMsg::Step => {
158-
debug.set_single_step(&self.vcpu_fd, true)?;
207+
debug.set_single_step(&self.vcpu_fd, true).map_err(|e| {
208+
log::error!("Failed to enable step instruction: {:?}", e);
209+
210+
e
211+
})?;
212+
159213
Ok(DebugResponse::Step)
160214
}
161215
DebugMsg::WriteAddr(addr, data) => {
162-
debug.write_addrs(&self.vcpu_fd, addr, &data, dbg_mem_access_fn)?;
216+
debug
217+
.write_addrs(&self.vcpu_fd, addr, &data, dbg_mem_access_fn)
218+
.map_err(|e| {
219+
log::error!("Failed to write to address: {:?}", e);
220+
221+
e
222+
})?;
163223

164224
Ok(DebugResponse::WriteAddr)
165225
}
166226
DebugMsg::WriteRegisters(regs) => debug
167227
.write_regs(&self.vcpu_fd, &regs)
228+
.map_err(|e| {
229+
log::error!("Failed to write registers: {:?}", e);
230+
231+
e
232+
})
168233
.map(|_| DebugResponse::WriteRegisters),
169234
}
170235
} else {

src/hyperlight_host/src/hypervisor/kvm.rs

Lines changed: 73 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,19 +109,40 @@ mod debug {
109109
if let Some(debug) = self.debug.as_mut() {
110110
match req {
111111
DebugMsg::AddHwBreakpoint(addr) => Ok(DebugResponse::AddHwBreakpoint(
112-
debug.add_hw_breakpoint(&self.vcpu_fd, addr).is_ok(),
112+
debug
113+
.add_hw_breakpoint(&self.vcpu_fd, addr)
114+
.map_err(|e| {
115+
log::error!("Failed to add hw breakpoint: {:?}", e);
116+
117+
e
118+
})
119+
.is_ok(),
113120
)),
114121
DebugMsg::AddSwBreakpoint(addr) => Ok(DebugResponse::AddSwBreakpoint(
115122
debug
116123
.add_sw_breakpoint(&self.vcpu_fd, addr, dbg_mem_access_fn)
124+
.map_err(|e| {
125+
log::error!("Failed to add sw breakpoint: {:?}", e);
126+
127+
e
128+
})
117129
.is_ok(),
118130
)),
119131
DebugMsg::Continue => {
120-
debug.set_single_step(&self.vcpu_fd, false)?;
132+
debug.set_single_step(&self.vcpu_fd, false).map_err(|e| {
133+
log::error!("Failed to continue execution: {:?}", e);
134+
135+
e
136+
})?;
137+
121138
Ok(DebugResponse::Continue)
122139
}
123140
DebugMsg::DisableDebug => {
124-
self.disable_debug()?;
141+
self.disable_debug().map_err(|e| {
142+
log::error!("Failed to disable debugging: {:?}", e);
143+
144+
e
145+
})?;
125146

126147
Ok(DebugResponse::DisableDebug)
127148
}
@@ -131,14 +152,25 @@ mod debug {
131152
.map_err(|e| {
132153
new_error!("Error locking at {}:{}: {}", file!(), line!(), e)
133154
})?
134-
.get_code_offset()?;
155+
.get_code_offset()
156+
.map_err(|e| {
157+
log::error!("Failed to get code offset: {:?}", e);
158+
159+
e
160+
})?;
135161

136162
Ok(DebugResponse::GetCodeSectionOffset(offset as u64))
137163
}
138164
DebugMsg::ReadAddr(addr, len) => {
139165
let mut data = vec![0u8; len];
140166

141-
debug.read_addrs(&self.vcpu_fd, addr, &mut data, dbg_mem_access_fn)?;
167+
debug
168+
.read_addrs(&self.vcpu_fd, addr, &mut data, dbg_mem_access_fn)
169+
.map_err(|e| {
170+
log::error!("Failed to read from address: {:?}", e);
171+
172+
e
173+
})?;
142174

143175
Ok(DebugResponse::ReadAddr(data))
144176
}
@@ -147,27 +179,60 @@ mod debug {
147179

148180
debug
149181
.read_regs(&self.vcpu_fd, &mut regs)
182+
.map_err(|e| {
183+
log::error!("Failed to read registers: {:?}", e);
184+
185+
e
186+
})
150187
.map(|_| DebugResponse::ReadRegisters(regs))
151188
}
152189
DebugMsg::RemoveHwBreakpoint(addr) => Ok(DebugResponse::RemoveHwBreakpoint(
153-
debug.remove_hw_breakpoint(&self.vcpu_fd, addr).is_ok(),
190+
debug
191+
.remove_hw_breakpoint(&self.vcpu_fd, addr)
192+
.map_err(|e| {
193+
log::error!("Failed to remove hw breakpoint: {:?}", e);
194+
195+
e
196+
})
197+
.is_ok(),
154198
)),
155199
DebugMsg::RemoveSwBreakpoint(addr) => Ok(DebugResponse::RemoveSwBreakpoint(
156200
debug
157201
.remove_sw_breakpoint(&self.vcpu_fd, addr, dbg_mem_access_fn)
202+
.map_err(|e| {
203+
log::error!("Failed to remove sw breakpoint: {:?}", e);
204+
205+
e
206+
})
158207
.is_ok(),
159208
)),
160209
DebugMsg::Step => {
161-
debug.set_single_step(&self.vcpu_fd, true)?;
210+
debug.set_single_step(&self.vcpu_fd, true).map_err(|e| {
211+
log::error!("Failed to enable step instruction: {:?}", e);
212+
213+
e
214+
})?;
215+
162216
Ok(DebugResponse::Step)
163217
}
164218
DebugMsg::WriteAddr(addr, data) => {
165-
debug.write_addrs(&self.vcpu_fd, addr, &data, dbg_mem_access_fn)?;
219+
debug
220+
.write_addrs(&self.vcpu_fd, addr, &data, dbg_mem_access_fn)
221+
.map_err(|e| {
222+
log::error!("Failed to write to address: {:?}", e);
223+
224+
e
225+
})?;
166226

167227
Ok(DebugResponse::WriteAddr)
168228
}
169229
DebugMsg::WriteRegisters(regs) => debug
170230
.write_regs(&self.vcpu_fd, &regs)
231+
.map_err(|e| {
232+
log::error!("Failed to write registers: {:?}", e);
233+
234+
e
235+
})
171236
.map(|_| DebugResponse::WriteRegisters),
172237
}
173238
} else {

0 commit comments

Comments
 (0)