2009-02-19 28 views
8

Tôi đang cố gắng sử dụng WinDBG hoặc trình gỡ lỗi khác để gỡ lỗi ứng dụng Windows CodeGear Delphi 2007 trên máy từ xa. Tôi đã không thể tạo ra các tệp biểu tượng cho WinDBG.Gỡ lỗi ứng dụng Delphi trên môi trường không phát triển

Có cách nào để sử dụng WinDBG hoặc trình gỡ rối khác để gỡ lỗi các ứng dụng Delphi trên một hệ thống không bao gồm IDE không?

Edit1

Các gỡ lỗi từ xa không phải là một tùy chọn ở đây. Tôi có thể điều khiển từ xa vào máy tính người dùng cuối, nhưng tôi không thể sử dụng trình gỡ lỗi từ xa do các hạn chế về tường lửa.

Edit2

tôi có thể từ xa vào máy, nhưng không thể kết nối gỡ lỗi từ xa CodeGear do hạn chế tường lửa.

Trả lời

0

Cảm ơn tất cả vì những đề xuất tuyệt vời và sản phẩm thú vị.

Để giải quyết vấn đề cụ thể này, cách "tốt nhất" tôi tìm thấy sử dụng OutputDebugString nằm trong không gian tên Windows. Điều này, cùng với Debug View from Sysinternals, sẽ cho phép tôi thu thập thông tin gỡ lỗi và sắp xếp thông tin nhanh chóng.

Nếu bạn quyết định sử dụng phương pháp này, hãy đảm bảo mọi thứ được bao bọc trong định dạng ANSI. IE:

OutputDebugString(PAnsiChar(string1 + string2)); 

Điều này đảm bảo rằng chuỗi1 và string2 được kết hợp và sau đó được chuyển đổi thành ANSI ký tự.

Tôi có lẽ chỉ nên bắt đầu đổ văn bản vào một tệp cho một cái gì đó nhanh chóng và dơ bẩn, nhưng điều này sẽ cho phép một phiên bản không gỡ lỗi phát ra thông báo gỡ lỗi.

+0

Tôi muốn để câu hỏi này được mở thêm vài ngày nữa để xem liệu chúng tôi có thể không nhận được câu trả lời hay hơn điều này để thực sự kết nối trình gỡ lỗi hay không. –

5

Trình gỡ rối từ xa như thế nào? Xây dựng ứng dụng của bạn với các biểu tượng gỡ lỗi từ xa và gỡ lỗi từ máy phát triển của bạn trên mạng.

+0

Tôi rất thích để có thể làm được điều này, nhưng tiếc máy khác là trên mạng hoàn toàn khác với những hạn chế tường lửa. –

+0

Tôi đã có thể truy cập từ xa vào PC, nhưng tôi không thể kết nối Trình gỡ lỗi từ xa thông qua TCP \ IP. Tôi đã nhìn vào một cái gì đó tương tự như WinDBG để khắc phục sự cố ứng dụng thông qua GUI vì tôi không thể kết nối trực tiếp trình gỡ rối. –

+0

Nếu bạn không thể kết nối từ xa, thì tôi thích ý tưởng của X-Ray. đá madExcept. –

1

Trong Delphi bạn có thể sử dụng Chạy -> Đính kèm vào Quy trình, chọn máy từ xa và chọn quy trình bạn muốn gỡ lỗi.

+0

... khi máy mục tiêu đang chạy trình gỡ lỗi từ xa. – dummzeuch

+0

Tôi chưa bao giờ sử dụng "thủ tục" này nên tôi không nghĩ về nó. Thx để thiết lập nó thẳng, ít nhất là "tôi" đã học được điều gì đó. –

5

thay vào đó, tôi dựa vào theo dõi ngăn xếp MadExcept và một số tính năng ghi nhật ký. ứng dụng của tôi được phân phối trên toàn thế giới & điều này đã đủ.

+0

Tôi đã xem sản phẩm này nhiều hơn một chút và tôi khá ấn tượng với những gì nó có thể làm! Rất tiếc, ứng dụng không bị lỗi. Tôi cần một cách để loại bỏ bộ nhớ hoặc đi bộ ứng dụng để bắt gặp một lỗi hợp lý hơn xảy ra. Cảm ơn bạn cho sản phẩm thú vị mặc dù! –

4

Bạn có thể thử tạo ra một tập tin bản đồ và sau đó chuyển đổi nó vào một tập tin dbg sử dụng map2dbg từ http://code.google.com/p/map2dbg/

Sau đó, bạn có thể tải các tập tin dbg trong WinDbg.

Tuyên bố từ chối trách nhiệm: Tôi đã gặp phải sự cố tương tự nhưng tôi đã quản lý để thực hiện gỡ lỗi từ xa và không phải thực hiện tất cả điều này. Vì vậy, tôi không chắc chắn điều này sẽ làm việc. Nhưng nếu bạn thử nó thì hãy cho chúng tôi biết nếu nó hoạt động.

+0

Tôi đã xem xét điều này một chút ngày hôm qua và phát hiện ra rằng nó không tương thích với Delphi. Nếu bạn có thêm thông tin về nó, điều này sẽ là hoàn hảo. –

2

Tôi sợ đây là một trong nhiều hơn những "Tôi không có một câu trả lời thực tế" câu trả lời, nhưng nó sức chỉ giúp ...

Bạn đã coi thêm khai thác gỗ để ứng dụng của bạn? Tôi đã nghe những điều tuyệt vời về SmartInspect. Với nó, bạn có thể đăng nhập tất cả các loại thông tin, bao gồm cả dấu vết ngăn xếp và "đồng hồ" (biến).

Một sản phẩm khai thác gỗ khác cho Delphi là EurekaLog.

+0

Tôi có thể xác nhận rằng SmartInspect là một giải pháp rất đáng tin cậy. Ok, bạn không thể sửa lỗi với nó, việc ghi nhật ký rất tốt và nâng cao. –

0

http://sourceforge.net/projects/tds2dbg/ có thể được sử dụng để chuyển đổi tệp gỡ lỗi TDS của Delphi thành tệp DBG. Điều này cung cấp thông tin biểu tượng cơ bản - các hàm, các lớp, các đơn vị, chứ không phải các biến. Đủ cho một cuộc gọi hợp lý ngăn xếp, và với một chút kiến ​​thức, đủ để gỡ lỗi các ứng dụng Delphi sống và với bãi chứa.

Tôi đã viết về một số kinh nghiệm Delphi + WinDBG trên blog của tôi: https://marc.durdin.net/2015/11/windbg-and-delphi-a-collection-of-posts/

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