2010-01-26 41 views
16

Tôi hiện đang phát triển ứng dụng C# đã có nhật ký riêng. Khi ngoại lệ được ném, ngoại lệ được lưu vào danh sách mà người dùng có thể xem qua chế độ xem danh sách. Khi người dùng nhấp vào một ngoại lệ trong chế độ xem danh sách, theo dõi ngăn xếp của ngoại lệ được hiển thị trong hộp văn bản. Nhưng ngay cả khi tôi đang thực hiện chương trình trên máy từ xa, theo dõi ngăn xếp sẽ hiển thị đường dẫn tệp tới tệp nguồn gốc từ máy nơi ứng dụng được biên dịch.Không hiển thị đường dẫn tệp của máy xây dựng trong ngăn xếp ngăn xếp

ví dụ .:

at C:\Folder1\Folder2\Class1.cs:81 
at C:\Folder1\Folder2\Class2.cs:65 
at C:\Folder1\Folder1\Class3.cs:21 

Chỉ hiển thị các tập tin nguồn mà không cần thư mục sẽ được tốt đẹp ...

Làm thế nào tôi có thể thay đổi hành vi này?

Có giải pháp gốc nào không? Hay tôi phải làm một số thao tác chuỗi?

+0

Mã đăng nhập của bạn trông như thế nào? – ChrisF

+0

Chỉ cần lọc đường dẫn bằng biểu thức Regex. Hoặc Path.GetFileName(). –

Trả lời

18

Bạn có thể có tệp .pdb với ứng dụng đã cài đặt. Nếu không có tệp .pdb, nó sẽ không hiển thị vị trí tệp.

Có một cái nhìn tại Getting line numbers in exception stack trace in a Windows Service

include line numbers in stack trace without pdb?

Bạn không thể có được một stack trace với dòng số trực tiếp từ ứng dụng của bạn, trừ khi bạn bó PDB.

+0

Cảm ơn bạn =). Nó hoạt động theo cách này. – Emiswelt

5

Đường dẫn tệp được bao gồm trong "program database" tệp (.pdb). Các tệp như vậy được tạo trong khi biên dịch và các đường dẫn trong các tệp này giống như trên máy biên dịch.

Bạn có thể xóa tệp .pdb khỏi bản cài đặt của mình, nhưng theo cách này, dấu vết ngăn xếp của bạn sẽ chỉ là một nửa thú vị như bây giờ, vì nó sẽ không cho bạn biết dòng nào xảy ra lỗi. Thông thường, bạn không chạy mã trong môi trường sản xuất với các tệp Pdb được đính kèm.

Nếu bạn muốn giữ "dấu vết ngăn xếp thú vị", bạn có thể xem xét thực hiện thay thế chuỗi tên thư mục, sau khi bạn đã gọi exceptionObject.toString().

+0

Cảm ơn bạn =). Nó hoạt động theo cách này. – Emiswelt

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