diff --git a/src/main.rs b/src/main.rs
index d98cf39f3..5435c845a 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -32,6 +32,9 @@ use vmm_sys_util::signal::block_signal;
enum Error {
#[error("Failed to create API EventFd: {0}")]
CreateApiEventFd(#[source] std::io::Error),
+ #[cfg(feature = "gdb")]
+ #[error("Failed to create Debug EventFd: {0}")]
+ CreateDebugEventFd(#[source] std::io::Error),
#[cfg_attr(
feature = "kvm",
error("Failed to open hypervisor interface (is /dev/kvm available?): {0}")
@@ -65,6 +68,12 @@ enum Error {
BareEventMonitor,
#[error("Error doing event monitor I/O: {0}")]
EventMonitorIo(std::io::Error),
+ #[cfg(feature = "gdb")]
+ #[error("Error parsing --gdb: {0}")]
+ ParsingGdb(option_parser::OptionParserError),
+ #[cfg(feature = "gdb")]
+ #[error("Error parsing --gdb: path required")]
+ BareGdb,
#[error("Error creating log file: {0}")]
LogFileCreation(std::io::Error),
#[error("Error setting up logger: {0}")]
@@ -376,6 +385,15 @@ fn create_app<'a>(
.group("vm-config"),
);
+ #[cfg(feature = "gdb")]
+ let app = app.arg(
+ Arg::new("gdb")
+ .long("gdb")
+ .help("GDB socket (UNIX domain socket): path=")
+ .takes_value(true)
+ .group("vmm-config"),
+ );
+
#[cfg(feature = "tdx")]
let app = app.arg(
Arg::new("tdx")
@@ -513,6 +531,26 @@ fn start_vmm(cmd_arguments: ArgMatches) -> Result