Tôi đang sử dụng trình biên dịch fortran intel (ifort
) trong môi trường mpi. Nó chỉ ra rằng mã của tôi có tràn bộ đệm khi tôi biên soạn với các cờ -g -O2 -check bounds
. Sau khi chạy một thời gian, tôi nhận được tin nhắn này:Intel Fortran - giới hạn kiểm tra không cung cấp số dòng
forrtl: severe (408): fort: (2): Subscript #1 of the array XX has value 4 which is greater than the upper bound of 3
Image PC Routine Line Source
program.exe 00000000006E757E Unknown Unknown Unknown
program.exe 00000000006E6016 Unknown Unknown Unknown
program.exe 00000000006905B2 Unknown Unknown Unknown
program.exe 0000000000642E6B Unknown Unknown Unknown
program.exe 0000000000643381 Unknown Unknown Unknown
program.exe 00000000005F33FB Unknown Unknown Unknown
program.exe 00000000004139E7 Unknown Unknown Unknown
program.exe 000000000040A6B4 Unknown Unknown Unknown
program.exe 0000000000409D2C Unknown Unknown Unknown
libc.so.6 000000380D61ECDD Unknown Unknown Unknown
program.exe 0000000000409C29 Unknown Unknown Unknown
Đây là tuyệt vời - bây giờ tôi biết rằng tôi đang tràn ngập XX
, nhưng ở đâu? sử dụng gfortran
, -fbounds-check
sẽ cung cấp cho tôi một tệp và số dòng. Có cách nào để tôi có thể nhận được điều đó với ifort
không?
Thử sử dụng -traceback cùng với cờ hiện tại của bạn. Trình biên dịch sau đó sẽ tạo thêm thông tin trong các tệp đối tượng để xác định vị trí dòng nguồn nơi xảy ra lỗi khi chạy. – milancurcic
Tôi sẽ kiểm tra nó ra và lấy lại cho bạn trong một vài phút khi mã đạt đến điểm xấu. – mgilson
@ IRO-bot - Điều đó đã làm được điều đó. Đăng câu trả lời và tôi sẽ vui vẻ chấp nhận. Nó vẫn không lấp đầy toàn bộ bảng - Có lẽ vì một số "thói quen" đó đã được chôn trong thư viện thời gian chạy hoặc một cái gì đó, nhưng nó cho tôi thấy nơi tôi cần tìm. – mgilson