2012-05-09 25 views
5

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:

  1. gỡ lỗi thông tin -> đúng
  2. Bao gồm debug biểu tượng từ xa -> đúng
  3. 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:

  1. Project1.exe
  2. project1.rsm

Hai gói thời gian chạy là:

  1. vcl160.bpl
  2. 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:

  1. Project1.exe
  2. project1.rsm
  3. vcl160.bpl
  4. 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?

+0

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

+0

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

+0

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. –

Trả lời

1

Dường như bạn phải bổ sung thêm tệp '.dcp' tương ứng với các gói thời gian chạy đã sử dụng.

Từ Debugger Notes (Release Notes để biết XE2):

Đảm bảo gỡ lỗi thông tin bằng cách thêm .dcp Files để Application Deployment

Nếu Delphi liên kết ứng dụng của bạn với gói thời gian chạy, dự kiến thông tin gỡ lỗi có thể không được tạo. Điều này đúng với các ứng dụng Mac OS X và cho các ứng dụng Win64 từ xa hoặc từ xa Win32. Giải pháp là sử dụng Trình quản lý triển khai để thêm các tệp .dcp tương ứng với các gói thời gian chạy trong danh sách gói thời gian chạy của bạn. Đối với cá thể , nếu bạn đang sử dụng rtl, bạn phải triển khai tệp rtl.dcp.

Sử dụng các tập tin .dcp nằm ở Embarcadero \ Rad Studio \ 9.0 \ lib thư mục, như sau:

  • Đối với một ứng dụng OS X: Embarcadero \ Rad Studio \ 9.0 \ lib \ OSX \ phát hành
  • Đối với một phiên bản 64-bit Windows ứng dụng từ xa: Embarcadero \ Rad Studio \ 9.0 \ lib \ win64 \ phát hành
  • Đối với một 32-bit ứng dụng Windows từ xa: Embarcadero \ Rad Studio \ 9.0 \ lib \ win32 \ phát hành
+0

Làm theo hướng dẫn ghi chú trình gỡ lỗi không hoạt động ... bất kỳ ý tưởng nào? –

+0

@Chau - Rất tiếc, không. Trên thực tế tôi không bao giờ sử dụng các gói thời gian chạy. Tôi đã hy vọng rằng tài liệu này hữu ích. Nó sẽ tạo sự khác biệt với 'dcp' trong thư mục gỡ lỗi? –

+0

@Sectac: Tôi đã thử cả thư mục phát hành và gỡ lỗi và nó không hoạt động. –

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