Hello,
I would like to use VisualStudio or (better Visual Studio Code) to Debug a User Subroutine (Umat).
I know it would be easier using write(6,*) or write(7,*) commands, but lets assume i would like to use the debugger.
I know there is a build in Debugger for Abaqus for Subroutine and i think i am close.
So i created a file directory there i have a job.inp and user.for (umat-subroutine), the env-file was changed accordingly.
Now i am using:
abaqus debug job=job user=umat.for -standard
It is opening VisualStudio. I can see the standard.exe in the right corner and my job is paused.
So far so good. Now i am opening the umat.for file and create a breakpoint. The Debugger just skips this Breakpoint and runs thow, when i click run.
Any idea how to proceed? I am glad for any kind of help. Thanks
I found some ressources about this topic, unfortenetly its about older Abaqus versions or other Systems, but i would like to create it on my windows.
Here my ressources that i looked at:
- https://github.com/nasa/CompDam_DGD?tab=readme-ov-file#advanced-debugging
This LinkedIn artikel describes, that i have to add maybe something like a windows command that is doing the same like the linux command auto-safe-load-path? -->
- https://www.linkedin.com/pulse/debugger-abaqus-user-subroutines-marcin-wierszycki/
- https://www.researchgate.net/file.PostFileLoader.html?id=583370f2404854f4a3096aa8&assetKey=AS%3A430985079726083%401479766258778
*Edit:
I have a wrapper, that opens Visual Studio Code and Standard.exe is available, job is paused. So now i am looking for a fix for this Breakpoints.
The abaqus debug help= command shows:
Error: must use "-" syntax. For example:
USAGE:
abq debug <-executable> [] -job c1 ...
abq debug cae [ -exe ker|gui ] ...
abq debug [ -exe <> [ -core <> ]]
OPTIONS:
-db debugger -- Debugger to launch
-exe executable -- Executable to debug
-stop function -- Function to stop at
-wait -- Wait for license (if unavailable)
-dbscript -- Load custom debugger script at startup
-dbargs "..." -- Pass arguments to the debugger
EXAMPLES -- SOLVERS
abq debug -pre dbx -job c1 ...
abq debug -standard cvd -job c1 ...
abq debug -standard gdb -job c1 -stop step_
abq debug -exe solver -job c1 ...
abq debug -exe standard -db msdev -job c1
abq debug -exe standard -db msdev10 -job c1
abq debug -explicit -job x1
abq debug -explicit -job x1 -double
abq debug -explicit -job x1 -recover
EXAMPLES -- CAE
abq debug cae -exe ker ...
abq debug cae -exe gui ...
EXAMPLES -- TEST PROGRAMS
abq debug test cowT_String
Default debugger on this platform is: devenv
Recognized executables:
pre,package,standard,explicit,select,state,Calculator,Extrapolator,ker,gui,cse,solver
Recognized debuggers:
devenv,msdev,msdev10,windbg,totalview,tvbeta,tvold,gdb,gdb64,dbx,cvd,wdb,ddd,idb"
The win86_64.env looks like this (just for the debugging):
#-*- mode: python -*-
#############################################################################
# #
# Compile and Link commands for ABAQUS on the Windows 64 Platform #
# #
#############################################################################
import os # <-- Debugging
os.environ['GLOBAL_ENABLE_FPE'] = 'TRUE' # <-- Debugging
# Location of the /include directory in the ABAQUS installation
abaHomeInc = os.path.abspath(os.path.join(os.environ.get('ABA_HOME', ''), os.pardir))
compile_cpp=['cl', '/c', '/W0', '/MD', '/TP',
'/EHsc', '/DNDEBUG', '/DWIN32', '/DTP_IP', '/D_CONSOLE',
'/DNTI', '/DFLT_LIC', '/DOL_DOC', '/D__LIB__', '/DHKS_NT',
'/D_WINDOWS_SOURCE', '/DFAR=', '/D_WINDOWS', '/DABQ_WIN86_64', '%P',
# '/O1', # <-- Optimization
# '/Zi', # <-- Debug symbols
'/I%I', '/I'+abaHomeInc]
compile_fmu=['win64CmpWrp', '-m64', '-msvc9', 'cl', '/LD',
'/D_WINDOWS', '/TC', '/W0', '/I%I', '/I'+abaHomeInc]
## Fortran compile command for User Subroutines
compile_fortran=['ifx',
'/c', '/fpp', '/extend-source',
'/DABQ_WIN86_64', '/DABQ_FORTRAN',
'/iface:cref', '/recursive',
'/Qauto', # <-- important for thread-safety of parallel user subroutines
'/align:array64byte',
'/Qpc64', # set FPU precision to 53 bit significand
'/Qprec-div', # improve precision of FP divides
'/Qfma-', # disable floating point fused multiply-add
'/fp:precise', # floating point model: precise
#'/Qimf-arch-consistency:true', # math library consistent results
'/Qfp-speculation:safe', # floating point speculations only when safe
'/Qprotect-parens', # honor parenthesis during expression evaluation
'/reentrancy:threaded', # important for thread-safety
#'/Qinit=zero','/Qinit=arrays', # automatically initialize all arrays to zero
#'/Qinit=snan', '/Qinit=arrays', # automatically initialize all arrays to SNAN
'/QxSSE3', '/QaxAVX', # generate SSE3, SSE2, and SSE instructions
'/Od', '/Ob0', # <-- Disable Optimization for Debugging
'/Zi', # <-- Debugging Information
'/include:%I', '/include:'+abaHomeInc, '%P']
link_sl=['LINK',
'/nologo', '/NOENTRY', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64',
'/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB',
'/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:LIBIFCOREMD.LIB', '/DEFAULTLIB:LIBIFPORTMD.LIB', '/DEFAULTLIB:LIBMMD.LIB',
'/DEFAULTLIB:kernel32.lib', '/DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib',
'/FIXED:NO', '/dll',
'/debug', # <-- Debugging
'/def:%E', '/out:%U', '%F', '%A', '%L', '%B',
'oldnames.lib', 'user32.lib', 'ws2_32.lib', 'netapi32.lib',
'advapi32.lib', 'msvcrt.lib', 'vcruntime.lib', 'ucrt.lib']
link_exe=['LINK',
'/nologo', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64', '/STACK:20000000',
'/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB', '/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:LIBIFCOREMD.LIB',
'/DEFAULTLIB:LIBIFPORTMD.LIB', '/DEFAULTLIB:LIBMMD.LIB', '/DEFAULTLIB:kernel32.lib',
'/DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib',
'/FIXED:NO', '/LARGEADDRESSAWARE',
'/debug', # <-- Debugging
'/out:%J', '%F', '%M', '%L', '%B', '%O',
'oldnames.lib', 'user32.lib', 'ws2_32.lib', 'netapi32.lib',
'advapi32.lib', 'msvcrt.lib', 'vcruntime.lib', 'ucrt.lib']
## Link command to be used for ABAQUS/MAKE on machines without the Fortran compiler.
## Uncomment it to enable.
#
#link_exe=['LINK', '/nologo', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64', '/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB',
# '/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:MSVCRT.LIB', '/DEFAULTLIB:kernel32.lib', '/DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib',
# '/FIXED:NO', '/LARGEADDRESSAWARE', '/out:%J', '%F', '%M', '%L', '%B', '%O',
# 'oldnames.lib', 'user32.lib', 'ws2_32.lib', 'netapi32.lib',
# 'advapi32.lib', 'msvcrt.lib', 'vcruntime.lib', 'ucrt.lib']
# Remove the temporary names from the namespace
del abaHomeInc