2012-08-10 9 views
5

Tôi muốn làm cho pydev nhập vào một chế độ giao diện điều khiển tương tác bất cứ khi nào chương trình của tôi đặt ra một ngoại lệ unhandled nhưng tôi không thể tìm ra cách để làm điều đó. Vì nó hoạt động ngay bây giờ, ngoại lệ được báo cáo và quá trình này bị chấm dứt một cách không công bằng.Làm cách nào để kích hoạt tính năng gỡ lỗi bài đăng trong pydev?

Sau khi một số tìm kiếm xung quanh Tôi thấy điều này: http://sourceforge.net/tracker/index.php?func=detail&aid=3029746&group_id=85796&atid=577332 mà gợi ý để sử dụng pydevd.set_pm_excepthook()

Tuy nhiên, khi tôi thêm

import pydevd 
pydevd.set_pm_excepthook() 

để mã của tôi, tôi nhận được một ngoại lệ:

This function is now replaced by GetGlobalDebugger().setExceptHook and is now controlled by the PyDev UI.') 
DeprecationWarning: This function is now replaced by GetGlobalDebugger().setExceptHook and is now controlled by the PyDev UI. 

Nhưng:

GetGlobalDebugger().setExceptHook() 

Dường như không hoạt động, GetGlobalDebugger() không tồn tại trong không gian tên chung.

+0

Tôi đã tìm ra cách, nhưng có vẻ như tôi không thể trả lời câu hỏi của riêng mình trong vòng 8 giờ vì vậy tôi đoán tôi nên đợi. –

Trả lời

4

Thực ra, bạn không cần phải làm điều này theo chương trình ... bạn có thể đi đến phối cảnh gỡ rối> pydev> quản lý các điểm ngắt ngoại lệ và kiểm tra 'đình chỉ ngoại lệ chưa nắm bắt'.

+0

Ồ, tiện dụng. Tư tưởng nên có một tùy chọn như thế, nhưng không tìm thấy nó trong các sở thích hoặc trong cấu hình gỡ lỗi. Cảm ơn vì tiền hỗ trợ. –

+0

Chương trình này là gì? – Seanny123

+0

Đây là khi phát triển bên trong PyDev: http://pydev.org/ –

2

Ok, vì vậy sau một thời gian tôi đã tìm ra sự thật hiển nhiên, các mã nên là:

import pydevd 
pydevd.GetGlobalDebugger().setExceptHook(Exception, True, False) 

Để nắm bắt bất kỳ trường hợp ngoại lệ unhadled. Phương pháp này có thể được sử dụng theo những cách khác để vào chế độ gỡ lỗi khi chương trình bị treo, như được ghi lại trong doc của setExceptHook:

nên được gọi là để thiết lập các trường hợp ngoại lệ phải được xử lý và cho dù đó nên phá vỡ trên uncaught và bị bắt ngoại lệ.

Có thể nhận tham số chỉ dừng ở một số ngoại lệ.

E.g.: 
     set_pm_excepthook((IndexError, ValueError), True, True) 

     or 

     set_pm_excepthook(IndexError, True, False) 

     if passed without a parameter, will break on any exception 

    @param handle_exceptions: exception or tuple(exceptions) 
     The exceptions that should be handled. 

    @param break_on_uncaught bool 
     Whether it should break on uncaught exceptions. 

    @param break_on_caught: bool 
     Whether it should break on caught exceptions. 

Tôi hy vọng điều này sẽ giúp những người muốn sử dụng trình gỡ lỗi PyDev trong Eclipse để gỡ lỗi một chương trình sau khi một ngoại lệ đã được nâng lên.