Tôi đã viết một ứng dụng win32 VCL đơn giản mà có đoạn mã sau:Làm thế nào để từ xa gỡ lỗi một ứng dụng Win32 VCL xây dựng với gói runtime
procedure TForm5.Button1Click(Sender: TObject);
begin
ShowMessage('bingo');
end;
tôi biên soạn các ứng dụng với các gói thời gian chạy và đã bật công tắc sau đây:
- gỡ lỗi thông tin -> đúng
- Bao gồm debug biểu tượng từ xa -> đúng
- Assertion, thông tin gỡ lỗi, smbols địa phương, dcus sử dụng debug -> đúng
Sản lượng có các tập tin sau đây:
- Project1.exe
- project1.rsm
Hai gói thời gian chạy là:
- vcl160.bpl
- rtl160.b pl
Tôi đặt điểm ngắt trong trình xử lý Button1Click, trình gỡ lỗi IDE cục bộ sẽ dừng ở đó nếu tôi chạy ứng dụng trong chế độ trình gỡ lỗi.
Tiếp theo, tôi muốn thử gỡ lỗi từ xa ứng dụng với các gói thời gian chạy.
Tôi gán cấu hình từ xa cho nền tảng cửa sổ 32 bit. Kết nối thử nghiệm hoạt động với cấu hình từ xa. PAServer đã được bắt đầu quá trong máy từ xa. Tôi có thể nhận thấy 4 file đã được sao chép vào máy từ xa khi cố gắng để chạy các ứng dụng với Delphi XE2 IDE debugger:
- Project1.exe
- project1.rsm
- vcl160.bpl
- rtl160.bpl
Tuy nhiên, các bản ghi sự kiện cho thấy:
Module Load: Project1.exe. No Debug Info. Base Address: $00400000. Process Project1.exe (1676)
Vì mô-đun không có thông tin gỡ lỗi, tất cả các điểm ngắt sẽ không kích hoạt được.
Tôi đã thử xây dựng một ứng dụng .exe đơn lẻ mà không cần gói thời gian chạy. Các bước gỡ rối từ xa giống nhau hoạt động và tôi có thể gỡ lỗi ứng dụng từ xa.
Điều gì khiến cho việc gỡ lỗi từ xa thất bại với ứng dụng được xây dựng với các gói thời gian chạy?
một thực hành tốt để gỡ lỗi cũng là sử dụng OutputDebugString, có thể pe xử lý bởi bạn, hoặc bởi một phần mềm bên 3d – RBA
bởi vì bạn không chỉ định phiên bản Delphi, có lẽ điều này có thể giúp http://stackoverflow.com/questions/ 5018147/delphi-2010-xa-gỡ lỗi-không thể-để-get-breakpoints-làm việc – RBA
RBA: Tôi đang sử dụng Delphi XE2 cập nhật 4. Bài viết bạn đề nghị là độc lập .exe ứng dụng và không được biên soạn với các gói thời gian chạy. –