Я использую библиотеку эмулятора Reduced Precision для эмуляции пониженной точности в некотором коде Фортрана. Библиотека предоставляет новый тип, который может заменить переменные реального типа переменными пониженной точности и перегружает основные арифметические операции, так что переменная усекается после каждой операции. Для этого библиотека использует элементарные подпрограммы.
Я хочу вызвать ошибку в библиотеке (во время операции усечения), когда определенные критерии выполнены, но элементарные подпрограммы являются ограничительными. Я использовал код из ответа на этот предыдущий вопрос , чтобы вызвать ошибку из элементарной подпрограммы в библиотеке эмулятора с уменьшенной точностью. Однако ошибка, вызванная ошибкой, не приводит к какой-либо трассировке. Я использовал компилятор gfortran и пробовал -g и -ftraceback при компиляции основного кода на языке Фортран и самой библиотеки, но трассировку я получаю только тогда, когда ошибка возникает вне элементарных подпрограмм.
Кто-нибудь знает, как я могу вызвать ошибку в элементарной подпрограмме и получить полезную трассировку?
Код, который я редактирую, это https://github.com/aopp-pred/rpe/blob/master/src/rp_emulator.F90,, в частности элементарная функция Adjust_ieee_half.