Как получить трассировку от ошибок в элементарных или чистых подпрограммах в Fortran - PullRequest
0 голосов
/ 17 мая 2019

Я использую библиотеку эмулятора Reduced Precision для эмуляции пониженной точности в некотором коде Фортрана. Библиотека предоставляет новый тип, который может заменить переменные реального типа переменными пониженной точности и перегружает основные арифметические операции, так что переменная усекается после каждой операции. Для этого библиотека использует элементарные подпрограммы.

Я хочу вызвать ошибку в библиотеке (во время операции усечения), когда определенные критерии выполнены, но элементарные подпрограммы являются ограничительными. Я использовал код из ответа на этот предыдущий вопрос , чтобы вызвать ошибку из элементарной подпрограммы в библиотеке эмулятора с уменьшенной точностью. Однако ошибка, вызванная ошибкой, не приводит к какой-либо трассировке. Я использовал компилятор gfortran и пробовал -g и -ftraceback при компиляции основного кода на языке Фортран и самой библиотеки, но трассировку я получаю только тогда, когда ошибка возникает вне элементарных подпрограмм.

Кто-нибудь знает, как я могу вызвать ошибку в элементарной подпрограмме и получить полезную трассировку?

Код, который я редактирую, это https://github.com/aopp-pred/rpe/blob/master/src/rp_emulator.F90,, в частности элементарная функция Adjust_ieee_half.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...