You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					249 lines
				
				3.8 KiB
			
		
		
			
		
	
	
					249 lines
				
				3.8 KiB
			| 
											4 years ago
										 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | ||
|  | <HTML | ||
|  | ><HEAD | ||
|  | ><TITLE | ||
|  | >Using Bochs and the remote GDB stub</TITLE | ||
|  | ><META | ||
|  | NAME="GENERATOR" | ||
|  | CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK | ||
|  | REL="HOME" | ||
|  | TITLE="Bochs User Manual" | ||
|  | HREF="index.html"><LINK | ||
|  | REL="UP" | ||
|  | TITLE="Tips and Techniques" | ||
|  | HREF="howto.html"><LINK | ||
|  | REL="PREVIOUS" | ||
|  | TITLE="Using Bochs internal debugger" | ||
|  | HREF="internal-debugger.html"><LINK | ||
|  | REL="NEXT" | ||
|  | TITLE="Using the serial port" | ||
|  | HREF="serial-port.html"></HEAD | ||
|  | ><BODY | ||
|  | CLASS="SECTION" | ||
|  | BGCOLOR="#FFFFFF" | ||
|  | TEXT="#000000" | ||
|  | LINK="#0000FF" | ||
|  | VLINK="#840084" | ||
|  | ALINK="#0000FF" | ||
|  | ><DIV | ||
|  | CLASS="NAVHEADER" | ||
|  | ><TABLE | ||
|  | SUMMARY="Header navigation table" | ||
|  | WIDTH="100%" | ||
|  | BORDER="0" | ||
|  | CELLPADDING="0" | ||
|  | CELLSPACING="0" | ||
|  | ><TR | ||
|  | ><TH | ||
|  | COLSPAN="3" | ||
|  | ALIGN="center" | ||
|  | >Bochs User Manual</TH | ||
|  | ></TR | ||
|  | ><TR | ||
|  | ><TD | ||
|  | WIDTH="10%" | ||
|  | ALIGN="left" | ||
|  | VALIGN="bottom" | ||
|  | ><A | ||
|  | HREF="internal-debugger.html" | ||
|  | ACCESSKEY="P" | ||
|  | >Prev</A | ||
|  | ></TD | ||
|  | ><TD | ||
|  | WIDTH="80%" | ||
|  | ALIGN="center" | ||
|  | VALIGN="bottom" | ||
|  | >Chapter 8. Tips and Techniques</TD | ||
|  | ><TD | ||
|  | WIDTH="10%" | ||
|  | ALIGN="right" | ||
|  | VALIGN="bottom" | ||
|  | ><A | ||
|  | HREF="serial-port.html" | ||
|  | ACCESSKEY="N" | ||
|  | >Next</A | ||
|  | ></TD | ||
|  | ></TR | ||
|  | ></TABLE | ||
|  | ><HR | ||
|  | ALIGN="LEFT" | ||
|  | WIDTH="100%"></DIV | ||
|  | ><DIV | ||
|  | CLASS="SECTION" | ||
|  | ><H1 | ||
|  | CLASS="SECTION" | ||
|  | ><A | ||
|  | NAME="DEBUGGING-WITH-GDB" | ||
|  | >8.12. Using Bochs and the remote GDB stub</A | ||
|  | ></H1 | ||
|  | ><P | ||
|  | >This section covers how you can use Bochs with a remote GDB stub to debug your kernel.</P | ||
|  | ><DIV | ||
|  | CLASS="SECTION" | ||
|  | ><H2 | ||
|  | CLASS="SECTION" | ||
|  | ><A | ||
|  | NAME="AEN3101" | ||
|  | >8.12.1. Configuring Bochs</A | ||
|  | ></H2 | ||
|  | ><P | ||
|  | >The GDB stub is not active in standard Bochs binary package.  So you must recompile Bochs. | ||
|  | Download the Bochs source package, unpack it and run the configure script | ||
|  | with the <B | ||
|  | CLASS="COMMAND" | ||
|  | >--enable-gdb-stub</B | ||
|  | > argument. | ||
|  | 
 | ||
|  | <TABLE | ||
|  | BORDER="0" | ||
|  | BGCOLOR="#E0E0E0" | ||
|  | WIDTH="100%" | ||
|  | ><TR | ||
|  | ><TD | ||
|  | ><PRE | ||
|  | CLASS="SCREEN" | ||
|  | >  $ ./configure --enable-gdb-stub</PRE | ||
|  | ></TD | ||
|  | ></TR | ||
|  | ></TABLE | ||
|  | > | ||
|  | 
 | ||
|  | After that, just run make and you should have a Bochs binary that contain a GDB stub in your directory.</P | ||
|  | ></DIV | ||
|  | ><DIV | ||
|  | CLASS="SECTION" | ||
|  | ><H2 | ||
|  | CLASS="SECTION" | ||
|  | ><A | ||
|  | NAME="AEN3106" | ||
|  | >8.12.2. Running Bochs</A | ||
|  | ></H2 | ||
|  | ><P | ||
|  | >Enable the <A | ||
|  | HREF="bochsrc.html#BOCHSOPT-GDBSTUB" | ||
|  | >gdbstub option</A | ||
|  | > in <TT | ||
|  | CLASS="FILENAME" | ||
|  | >bochsrc</TT | ||
|  | >, then just start Bochs as normal. Bochs will stop and wait for GDB to connect to the stub.</P | ||
|  | ></DIV | ||
|  | ><DIV | ||
|  | CLASS="SECTION" | ||
|  | ><H2 | ||
|  | CLASS="SECTION" | ||
|  | ><A | ||
|  | NAME="AEN3111" | ||
|  | >8.12.3. Running GDB</A | ||
|  | ></H2 | ||
|  | ><P | ||
|  | >Bochs GDB stub waits for a connection on TCP port 1234. Just start GDB like this: | ||
|  | 
 | ||
|  | <TABLE | ||
|  | BORDER="0" | ||
|  | BGCOLOR="#E0E0E0" | ||
|  | WIDTH="100%" | ||
|  | ><TR | ||
|  | ><TD | ||
|  | ><PRE | ||
|  | CLASS="SCREEN" | ||
|  | >  $ gdb YOUR-KERNEL | ||
|  |   . | ||
|  |   . | ||
|  |   . | ||
|  |   (gdb) target remote localhost:1234 | ||
|  |   Remote debugging using localhost:1234 | ||
|  |   0x0000fff0 in ?? () | ||
|  |   (gdb)</PRE | ||
|  | ></TD | ||
|  | ></TR | ||
|  | ></TABLE | ||
|  | > | ||
|  | 
 | ||
|  | You are now connected to the remote GDB stub in Bochs. You are now able to set breakpoints. | ||
|  | Use the continue (c) command to continue the simulation. | ||
|  | 
 | ||
|  | Hitting ^C works. Example: | ||
|  | 
 | ||
|  | <TABLE | ||
|  | BORDER="0" | ||
|  | BGCOLOR="#E0E0E0" | ||
|  | WIDTH="100%" | ||
|  | ><TR | ||
|  | ><TD | ||
|  | ><PRE | ||
|  | CLASS="SCREEN" | ||
|  | >  Program received signal 0, Signal 0. | ||
|  |   syscall_testsuite_result (aux=0x1f11fe4) at ../rtmk/syscalls.c:33 | ||
|  |   33     { | ||
|  |   (gdb)</PRE | ||
|  | ></TD | ||
|  | ></TR | ||
|  | ></TABLE | ||
|  | ></P | ||
|  | ></DIV | ||
|  | ></DIV | ||
|  | ><DIV | ||
|  | CLASS="NAVFOOTER" | ||
|  | ><HR | ||
|  | ALIGN="LEFT" | ||
|  | WIDTH="100%"><TABLE | ||
|  | SUMMARY="Footer navigation table" | ||
|  | WIDTH="100%" | ||
|  | BORDER="0" | ||
|  | CELLPADDING="0" | ||
|  | CELLSPACING="0" | ||
|  | ><TR | ||
|  | ><TD | ||
|  | WIDTH="33%" | ||
|  | ALIGN="left" | ||
|  | VALIGN="top" | ||
|  | ><A | ||
|  | HREF="internal-debugger.html" | ||
|  | ACCESSKEY="P" | ||
|  | >Prev</A | ||
|  | ></TD | ||
|  | ><TD | ||
|  | WIDTH="34%" | ||
|  | ALIGN="center" | ||
|  | VALIGN="top" | ||
|  | ><A | ||
|  | HREF="index.html" | ||
|  | ACCESSKEY="H" | ||
|  | >Home</A | ||
|  | ></TD | ||
|  | ><TD | ||
|  | WIDTH="33%" | ||
|  | ALIGN="right" | ||
|  | VALIGN="top" | ||
|  | ><A | ||
|  | HREF="serial-port.html" | ||
|  | ACCESSKEY="N" | ||
|  | >Next</A | ||
|  | ></TD | ||
|  | ></TR | ||
|  | ><TR | ||
|  | ><TD | ||
|  | WIDTH="33%" | ||
|  | ALIGN="left" | ||
|  | VALIGN="top" | ||
|  | >Using Bochs internal debugger</TD | ||
|  | ><TD | ||
|  | WIDTH="34%" | ||
|  | ALIGN="center" | ||
|  | VALIGN="top" | ||
|  | ><A | ||
|  | HREF="howto.html" | ||
|  | ACCESSKEY="U" | ||
|  | >Up</A | ||
|  | ></TD | ||
|  | ><TD | ||
|  | WIDTH="33%" | ||
|  | ALIGN="right" | ||
|  | VALIGN="top" | ||
|  | >Using the serial port</TD | ||
|  | ></TR | ||
|  | ></TABLE | ||
|  | ></DIV | ||
|  | ></BODY | ||
|  | ></HTML | ||
|  | > |