2013-03-01 32 views
8

想想這樣的場景:調試與pycharm,如何步入項目,而不進入Django的庫

調試我的Django項目,我通過代碼(進出)步驟。調試器有時會進入Django庫或其他外部庫。

有誰知道如何防止調試器輸入外部代碼?或者至少是一個「大」的步驟,讓調試器回到項目代碼?

+2

將斷點在你的代碼並運行它。 – duffymo 2013-03-01 18:36:48

+0

單步執行對庫的方法調用不起作用? – 2013-03-01 18:47:04

+0

看看這裏:http:// stackoverflow。com/questions/11966276/ignore-exceptions-thrown-and-caught-a-library – 2013-03-01 19:57:07

回答

0

一切看起來都是相同的調試器,它不能區分你的代碼或Django的代碼 - 這都是Python。所以它會運行所有的東西,但是如果你想阻止它降低到這麼低,你將不得不開始「跨越」一行代碼,而不是「步入」它們。

根據PyCharm docs,當你看到一行代碼看起來像是進入Django內部的網關時,你會想使用F8。如果您偶然發現自己在Django的源代碼中,您可以點擊Shift+F8,直到完全無法使用。

+2

謝謝你們的答案! 事實上,Shift + F8是我迄今爲止使用的,我只是覺得它很乏味而且浪費時間。雖然偶爾我會看Django的代碼,但大部分時間我都看着我的項目。 也許這是未來版本PyCharm的一個特性。 – Dan 2013-03-01 20:23:40

+0

它不會成爲未來版本的一個功能,因爲它不是必需的。斷點和逐行代碼已經解決了這個問題。 – Matt 2013-03-01 20:37:30

+2

*它無法區分你的代碼或Django的代碼*通過設置一個斷點,告訴調試器停止的地方。爲什麼你認爲不可能有辦法告訴調試器在哪裏停止?看到問題[我如何配置Qt Creator和/或gdb,以便在使用Qt庫調試我的程序時,調試器將避免步入Qt的源文件?](http://stackoverflow.com/q/1448426/95735)顯示'gdb'中有這樣的機制。如果一個調試器具有此功能,其他調試器可能也有此功能。 – 2013-03-03 12:46:13

6

有誰知道如何防止調試器輸入外部代碼?

是的,德米特里·特羅菲莫夫knows;

(...)添加模塊你不想跟蹤到字典中DONT_TRACE<pycharm-distr>/helpers/pydev/pydevd.py
這是一個哈克的解決方案(...)

如果你想要這個功能少哈克可以在其上投票通過訪問問題
PY-9101 Implement "Do not step into the classes" option for Python debugger


那些使用PDB可能有興趣知道有這是pdb中的一個特性;

與Python 3.1開始,Pdb類有一個叫做skip新的說法 -

class pdb.Pdb(completekey='tab', stdin=None, stdout=None, skip=None, nosigint=False)

跳躍的說法,如果有,一定要全域式模塊 名模式可迭代。調試器將不會進入匹配其中一個模式的模塊中產生 的幀。 1

1無論幀被認爲一定的模塊中發起是 通過在幀的全局確定__name__

在文檔中給出的例子顯示瞭如何跳過Django的包 -

import pdb; pdb.Pdb(skip=['django.*']).set_trace()