Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28701 Discussions

Debugging Fortran 7.2 inside of Visual C++ IDE

fcedotal
Beginner
429 Views
I have simple application that I have got to compile in FORTRAN. This will grow into several files with multiple subroutines and functions and I need to eventually call from VB. I am trying to get the basics down and then move on to the tought stuff!

2 Projects in 1 workspace
Project 1 just has 1 file:console.for
PROGRAM MAIN
EXTERNAL MYDLL
!DEC$ ATTRIBUTES DLLIMPORT :: MYDLL
!DEC$ ATTRIBUTES ALIAS: 'MYDLL'::MYDLL
CHARACTER (LEN=20) STR_IN, STR_OUT, STR_RPT
STR_IN = 'meltpump.in'
STR_OUT = 'meltpump.out'
STR_RPT = 'meltpump_report.out'
CALL MYDLL(TRIM(STR_IN), TRIM(STR_OUT), TRIM(STR_RPT))
END

The 2nd project has 2 files:mydll.for and testfil.for
mydll.for
SUBROUTINE MYDLL(STR_IN, STR_OUT, STR_RPT)
!DEC$ ATTRIBUTES DLLEXPORT :: MYDLL
!DEC$ ATTRIBUTES ALIAS:'MYDLL'::MYDLL
IMPLICIT REAL (KIND=8) (A-H,O-Z)
EXTERNAL TEST2TIM

CMKM DECLARED VARIABLES FOR INPUT FILE, OUTPUT FILE AND FIND_DOT SUBROUTINE
CHARACTER (LEN=20) STR_IN, STR_OUT, STR_RPT
INTEGER LEN2DOT, FIND_DOT
DIMENSION H(20,10), DUM(3)
C CHARACTER*79 COMN1,COMN2
DIMENSION XL(3),X(3,2),F(3),A(3,3),WORK(60),WEIGHT(3),XI(3)
DIMENSION BETA(2),E(2),AXT(2),AYT(2),W(2),THETA(2),BAP(2)
DIMENSION TORX3(2),TORY3(2),TORZ3(2),SON(2),DEF(2),BMF(2)
DIMENSION BMG(2),SF(2),SFF(2),SG(2),SFG(2)
DIMENSION QT(2,10),QT1(2,10),QT2(2,10)
INTEGER INERR,OUTERR
INTEGER RESSEL
REAL (KIND=8) AA,BB,CC,DD,EE,FFFF,BT,CHG,TREF,TAUC,PCF
AA = TEST2TIM(8,5)
END

testfil.for
FUNCTION TEST2TIM (NUMIN, NUMOUT)

REAL (KIND=8) NUMIN, NUMOUT
NUMOUT = NUMOUT * 2
TEST2TIM = NUMOUT
END

I can step into the main program with the debugger in visual C++ 6, but when I get to the call to mydll, my app bombs and I get:
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:WINDOWSsystem32kernel32.dll', no matching symbolic information found.
Loaded 'C:TESTFORTRANCONSOLMYDLLMYDLL.dll', no matching symbolic information found.
Loaded 'C:WINDOWSsystem32user32.dll', no matching symbolic information found.
Loaded 'C:WINDOWSsystem32gdi32.dll', no matching symbolic information found.
Loaded 'C:WINDOWSsystem32advapi32.dll', no matching symbolic information found.
Loaded 'C:WINDOWSsystem32 pcrt4.dll', no matching symbolic information found.
First-chance exception in CONSOLMYDLL.exe: 0xC0000005: Access Violation.
The thread 0x940 has exited with code 1 (0x1).
The program 'C:TESTFORTRANCONSOLMYDLLDebugCONSOLMYDLL.exe' has exited with code 1 (0x1).

Is there way to get the debugger to step into the code inside of the subroutine in another file?

Thanks
0 Kudos
2 Replies
Intel_C_Intel
Employee
429 Views
Those messages about "no matching symbolic" are information only and you can ignore them.

In CVF you could insert a break point (F9) at the line with CALL MYDLL, another break point at the first line in SUBROUTINE MYDLL, start debugging with "Go" (F5), then step forward with F11. But I don't know if "Fortran 7.2" has the same GUI or not.

And let me guess that you are trying to send something to the console inside your DLL, which causes the error.

Sabalan.
0 Kudos
Steven_L_Intel1
Employee
429 Views
I'll assume that the Fortran version here is really 7.1. Neither Intel Fortran nor CVF have had a 7.2.

The instructions in this CVF Knowledge Base article should also work for Intel Fortran regarding debugging of DLLs.

Steve
0 Kudos
Reply