2008-10-02 16 views
25

मुझे पूरा यकीन है कि मैंने इसे पहले देखा है, लेकिन मुझे यह नहीं पता/याद किया गया है कि इसे कैसे किया जाए। मैं कोड की एक पंक्ति रखना चाहता हूं कि डेल्फी डीबगर से निष्पादित होने पर मैं डीबगर को पॉप-अप करना चाहता हूं जैसे कि उस रेखा पर ब्रेक पॉइंट था।कोड में डेल्फी ब्रेकपॉइंट अनुकरण कैसे करें?

कुछ की तरह:

FooBar := Foo(Bar); 
SimulateBreakPoint; // Cause break point to occur in Delphi IDE if attached 
WriteLn('Value: ' + FooBar); 

उम्मीद है कि है कि समझ में आता है। मुझे पता है कि मैं एक अपवाद का उपयोग कर सकता हूं, लेकिन मैं चाहता हूं कि यह बहुत अधिक ओवरहेड होगा। यह कुछ प्रदर्शन कोड के लिए है।

अग्रिम धन्यवाद!

उत्तर

37

कोड से डिबगर को गति प्रदान करने के लिए (माना जाता है कि, मैं काम डेल्फी की एक प्रति की कोशिश करने की जरूरत नहीं है):

http://17slon.com/blogs/gabr/2008/03/debugging-with-lazy-breakpoints.html

+0

वह था। महान काम किया! धन्यवाद! अब मुझे ब्रेक पॉइंट के लिए कॉल स्टैक को स्थानांतरित करने का एक तरीका ढूंढना होगा। । । । –

+0

अन्यथा पकड़ने के लिए सावधान रहें डीबगर के बाहर चलते समय एक बाहरी अपवाद होगा। –

+2

या, जैसा कि मैंने सुझाव दिया: यदि डीबगहुक <> 0 तो एएसएम int 3 अंत; – gabr

13

एंड्रियास Hausladen के रूप में:

asm int 3 end; 

यह पेज देखें उस कलाकृति पर टिप्पणियों में कहा गया है, Win32 API DebugBreak() फ़ंक्शन कम डॉस-आश है और समान रूप से अच्छी तरह से काम करता है।

+10

डीबगब्रैक() विघटनकारी/सीपीयू विंडो में ब्रेक पॉइंट डालता है। मैं इसे अपने कोड में रखना चाहूंगा। –

संबंधित मुद्दे