Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
soc:2008:stefanha:journal:week2 [2008/06/06 06:35] stefanha |
soc:2008:stefanha:journal:week2 [2008/06/09 03:09] (current) stefanha |
||
---|---|---|---|
Line 70: | Line 70: | ||
**GDB remote debugging is in mainline gPXE**. Thanks to mcb30 for reviewing and merging the code. | **GDB remote debugging is in mainline gPXE**. Thanks to mcb30 for reviewing and merging the code. | ||
- | Documentation is available [[:dev:gdbstub|here]]. I also spent a couple of hours yesterday and today making a [[http://video.google.com/videoplay?docid=-5951365569769661989&hl=en|screencast]] ([[http://etherboot.org/share/stefanha/gdbstub.mpeg|higher quality version]] 12 MB): | + | Documentation is available [[:dev:gdbstub|here]]. I also spent a couple of hours yesterday and today making a [[http://video.google.com/videoplay?docid=-5951365569769661989&hl=en|screencast]] ([[http://etherboot.org/share/stefanha/gdbstub.mpg|higher quality version]] 14 MB): |
[[http://video.google.com/videoplay?docid=-5951365569769661989&hl=en|{{:dev:screencast.png|GDB Remote Debugging for gPXE Screencast}}]] | [[http://video.google.com/videoplay?docid=-5951365569769661989&hl=en|{{:dev:screencast.png|GDB Remote Debugging for gPXE Screencast}}]] | ||
Line 83: | Line 83: | ||
==== Fri Jun 6 ==== | ==== Fri Jun 6 ==== | ||
+ | Had the weekly meeting today and discussed next week's goal: hardware watchpoints and UDP transport. | ||
- | Next steps: | + | Hardware watchpoints shouldn't require major changes so I want to defer that towards late next week. |
- | * Recode screencast using VLC, the current file seems broken (thanks for letting me know mdc). | + | |
- | * Use screen captures on [[:dev:gdbstub|GDB stub page]]. | + | UDP transport is challenging because we want to support remote debugging over UDP while affecting the network stack as little as possible. The GDB stub is designed to be isolated from the rest of gPXE so that using the debugger does not affect the state of the program. |
- | * Implement hardware breakpoint and watchpoint support using debug registers. | + | |
- | * Using debug register, implement NULL pointer bug guard. | + | To send a UDP packet, we'll craft a Ethernet, IP, UDP packet by hand. This side-steps the network stack and reduces dependencies on gPXE functions. Using ''netdev_tx()'' a raw packet can be queued for transmission. |
- | * Implement UDP transport. | + | |
+ | Receiving UDP packets is more difficult. When the GDB stub has control, the program is paused inside an interrupt handler. If we receive a packet not destined for the GDB stub we are in trouble since there is only limited memory available to buffer received packets. | ||
+ | |||
+ | Ideally we could queue up all non-GDB packets so that they are processed when gPXE regains control. But due to finite memory, I am going to implement a strategy that drops all non-GDB packets first. Depending on how that works in practice, I might add something fancier to deal with the memory issue or an eviction policy. | ||
+ | |||
+ | ===== On to week 3 ===== | ||
+ | [[.:week3|Week 3]] |