如何调试Julia的回调函数

【使用VSCode调试Julian程序无法命中回调函数的断点-哔哩哔哩】 使用VSCode调试Julian程序无法命中回调函数的断点_哔哩哔哩_bilibili
我录了一个调试julia代码的视频。视频里面可以看见如果断点打在原生的julia语句中,是可以命中的。但是如果把断点打在回调函数里面,则不会命中。我的回调函数的定义如下:

function on_exit(reason::Cint, user_data::Ptr{Cvoid})::Cvoid
    strategy_log(2, string("strategy exit, reason:", reason))
    println("This is a julia callback function passed to C lib")
    println("debugger cannot hit this breakpoint")
    println("strategy completed")
    nothing
end

#Using cfunction can pass julia callback function to c
function strategy_set_exit_callback(on_exit::Function)::Cint
    on_exit_c = @cfunction($on_exit, Cvoid, (Cint, Ptr{Cvoid}))
    user_data = Ref{Cvoid}()
    err = ccall((:strategy_set_exit_callback, lib), Int32, (Ptr{Cvoid}, Ptr{Cvoid}), on_exit_c, user_data)
    return err
end
strategy_set_exit_callback(on_exit)

回调函数on_exit是一个julia函数,通过@cfunction变成一个函数指针,传递到一个c的库里面。这个c库可以把on_exit注册为回调函数。这种方法是可以让on_exit正常运行的,但是用VSCode的debugger插件去调试,无法命中其中的断点。如何调试这种回调函数呢?

备案号:京ICP备17009874号-2