Ứng dụng của tôi được viết bằng Delphi5. Tôi đang sử dụng madExcept để theo dõi lỗi. Tôi đã theo dõi một ngoại lệ "Điểm nổi hình ảnh bằng không", nơi nó không nên. Đoạn mã, nơi nó được nâng lên, như sau:Phân chia dấu chấm động bằng không ngoại lệ trong Delphi5
val:=100*Power(1.25,c);
trong đó 'c' thực sự luôn có giá trị '1'.
Các vết đống của nhật ký:
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
tôi đã ngoại lệ khác tại một thời điểm, nơi một bộ phận đã diễn ra, tuy nhiên số chia là một biến, mà cũng có giá trị '1' khi ngoại lệ đã xảy ra. Rằng tôi đã có thể gỡ lỗi và tái sản xuất.
Câu hỏi của tôi: tôi đang thiếu gì? Có một số tích cực sai về phân chia điểm nổi mà tôi không biết?
Hơn nữa: Tôi không sử dụng bất kỳ DLL C++ nào tại các điểm ngoại lệ vì chúng có xu hướng xử lý các đơn vị FP khác nhau (trả về NaN hoặc +/- INF thay vì tăng ngoại lệ).
Bất kỳ con trỏ nào được đánh giá cao.
Âm thanh không chính xác lắm. Tôi không nghĩ rằng các công cụ gỡ lỗi của bạn đang trỏ bạn tới đúng nơi, hoặc có lẽ các biến không nắm giữ những gì bạn nghĩ. –
Đừng nhớ nếu D5 đã có nó, nhưng bạn đã cố gắng kiểm tra những gì đang xảy ra trong khung nhìn CPU/FPU khi mã đó được thực hiện? –
@ldsandon Tất nhiên D5 đã được phép sử dụng Alt-F2 và bước vào khung nhìn CPU/FPU. Ý tưởng tốt. Nhưng tôi đoán một ngoại lệ FPU không được giải quyết sẽ phá vỡ trong mã 'System._Frac'. –