2013-01-09 26 views
12

Dường như có sự cố với bộ nạp khởi động Freedos. (Có vẻ như mã khởi động không thể tìm thấy hạt nhân trong một số trường hợp nhất định.)Gỡ bộ nạp khởi động với gdb trong qemu

Vì vậy, tôi đang cố gỡ lỗi bộ nạp khởi động trong qemu bằng gdb. Theo các hướng dẫn được tìm thấy trên nhiều wiki và cung cấp miễn phí tài liệu học tập trực tuyến, tôi chạy qemu như thế này

qemu-system-i386 -fda fdboot.img -boot a -s -S 

Và sau đó kết nối gdb như thế này

$ gdb 
(gdb) target remote localhost:1234 

tôi có thể bước qua lần đầu tiên 10 - 12 hướng dẫn với si mà tôi giả định là SeaBIOS.

Nhưng trước đó, khi tôi cố gắng bước vào mã bộ nạp khởi động, nó tiếp tục thực hiện mà không bị hỏng, tất cả các con đường lên đến dấu nhắc menu FreeDos. Điều này hoàn toàn bỏ qua mã bộ nạp khởi động mà tôi muốn kiểm tra từng bước khi nó được thực hiện.

Tôi cần làm gì để có thể bước qua bộ nạp khởi động?

[Bạn có thể tải hình ảnh FreeDOS mềm từ trang web của dự án nếu bạn muốn thử mình.]

+0

Đề xuất thay thế: BOCHS có trình gỡ rối tích hợp sẵn sẽ cho phép bạn thực hiện một bước trong khu vực khởi động. –

Trả lời

10

Hoạt động tốt ở đây sử dụng qemu 1.3 và gdb 7.3.50.20111117 (bạn không nói những gì phiên bản bạn sử dụng) . tôi đã có thể tấn bước duy nhất của hướng dẫn cho đến khi tôi đã chán và đặt một breakpoint để bắt bootloader:

(gdb) br *0x7c00 
Breakpoint 1 at 0x7c00 
(gdb) c 
Continuing. 

Breakpoint 1, 0x00007c00 in ??() 
(gdb) x/i $eip 
=> 0x7c00:  jmp 0x7c3e 

Lưu ý rằng tôi đã thiết gdb để 16 bit chế độ đầu tiên sử dụng set architecture i8086.

+0

Tôi đang sử dụng gdb 7.5-ubuntu và qemu 1.2.0 (qemu-kvm-1.2.0 + noroms-0ubuntu2, Debian). Có, tôi đã cố gắng breakpointing tại * 0x7c00, nhưng nó chỉ có vẻ đi qua địa chỉ đó, không bao giờ phá vỡ, đạt trình đơn tương tác của Freedos. Tôi cũng đã cố gắng thiết lập các achitecture để i8086, không có sự khác biệt. Tôi sẽ cố gắng biên dịch qemu và gdb từ thân cây/đầu để xem nếu nó làm cho bất kỳ sự khác biệt. – rhlee

+0

Đúng, tôi biên dịch qemu từ HEAD và tôi có thể thực hiện thành công tất cả các hướng dẫn ngay bây giờ. – rhlee

+0

Bạn có nghĩa là biên dịch qemu từ HEAD? Tôi chưa bao giờ nghe điều đó trước đây. Tôi có vấn đề tương tự nhưng tôi không biết những gì biên dịch từ HEAD có nghĩa là. Chăm sóc để xây dựng? :) – Rob

Các vấn đề liên quan