Editor內Blueprint中斷點沒有觸發

最近在做功能的時候遇到了有趣的問題。

其實以前就偶爾有遇到但是沒有認真找原因,因為發生的機會其實很低。

這次很幸運的找到問題的原因,所以分享一下


問題發生的現象


在解決問題之前,先描述問題的定義

在BP下中斷點

無論如何都不會停下來

但是在中斷點前或後面的節點下PrintString確定會印,功能也都正常

就只是斷點不會停


如果這個BP是從C++呼叫的話

C++的斷點是會停的。


問題的原因


追查發現ScriptCore.cpp

在執行BP的breakpoint 之前

會檢查現在是不是在GameThread

如果有在Game Thread才會觸發中斷點


剛好我這次的功能是從muti-threading的animation事件過來的

CallStack直接看到有Update_AnyThread的字眼


所以下次如果再遇到類似的現象

可能要想一下是不是因為multi threading造成的~


相關程式碼


ScriptCore.cpp

FBlueprintCoreDelegates::ThrowScriptException裡面的

if (IsInGameThread())

{

    OnScriptException.Broadcast(ActiveObject, StackFrame, Info);

}

留言

這個網誌中的熱門文章

UE4 除錯技巧分享 (一)

UE4 GameplayAbilitySystem - GameplayEffect & GameplayCue 如何設定參數

UE4 除錯技巧分享 (二)