में शून्य अपवाद द्वारा फ़्लोटिंग पॉइंट डिवीजन मेरा ऐप डेल्फी 5 में लिखा गया है। मैं बग को ट्रैक करने के लिए madExcept का उपयोग कर रहा हूँ। मैंने "फ्लोटिंग पॉइंट डिवीजन शून्य द्वारा" अपवाद को ट्रैक किया, जहां यह नहीं होना चाहिए। कोड सेगमेंट, जहां इसे उठाया जाता है, निम्नानुसार जाता है:डेल्फी 5
val:=100*Power(1.25,c);
जहां 'सी' वास्तव में हमेशा '1' मान होता है।
लॉग का स्टैक ट्रेस:
main thread ($338f8):
00403504 +010 MyApp.exe System 1970 +5 @FRAC
00479148 +058 MyApp.exe Math Power
007ae8a6 +262 MyApp.exe MyClass 1962 +36 TMyClass.FormMouseWheel
मैं एक बिंदु है, जहां एक-विभाजन होने पर फिर से किया था अपवाद था, फिर भी भाजक एक चर, जो भी मूल्य था '1' जब अपवाद हुआ। कि मैं डीबग और पुन: पेश करने में सक्षम था।
मेरा प्रश्न: मुझे क्या याद आ रही है? क्या फ्लोटिंग पॉइंट डिवीजन के बारे में कुछ झूठे सकारात्मक हैं जिनके बारे में मुझे जानकारी नहीं है?
इसके अलावा: मैं अपवाद बिंदुओं पर किसी भी सी ++ डीएलएल का उपयोग नहीं कर रहा हूं क्योंकि वे एफपी डिवीजनों को अलग-अलग संभालते हैं (अपवाद बढ़ाने के बजाय NaN या +/- INF लौटाते हैं)।
किसी भी पॉइंटर्स की सराहना की।
बहुत व्यावहारिक नहीं लगता है। मुझे नहीं लगता कि आपके डिबगिंग टूल आपको सही जगह पर इंगित कर रहे हैं, या शायद वेरिएबल वे नहीं हैं जो आप सोचते हैं कि वे हैं। –
याद रखें कि डी 5 में पहले से ही यह था, लेकिन क्या आपने यह जांचने की कोशिश की कि सीपीयू/एफपीयू दृश्य में क्या हो रहा है जब उस कोड को निष्पादित किया गया हो? –
@ldsandon बेशक डी 5 को पहले से ही Alt-F2 का उपयोग करने और CPU/FPU दृश्य में कदम रखने की अनुमति है। अच्छा विचार। लेकिन मुझे लगता है कि एक unhandled एफपीयू अपवाद 'System._Frac' कोड में तोड़ देगा। –