[問題] 被編譯器優化無法使用gdb

作者: shihyu (shihyu)   2019-10-06 12:55:19
最近使用gdb 去追蹤opencv
我編譯opencv 參數是 -g -O0 -ggdb3
但是我發現有些函數進不去感覺是被編譯器優化
ocl_remap 函數gdb 無法進入 , 被當作函數參數的函數會被優化?
CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat(),ocl_remap(_src, _dst, _map1, _map2, interpolation, borderType, borderValue))
如果把程式碼拆成兩行gdb 是可以正常進去ocl_remap
bool ocl_remap_result = ocl_remap(_src, _dst, _map1, _map2, interpolation, borderType, borderValue);
CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat(), ocl_remap_result)
想請問一下有什麼辦法解決這問題
謝謝
作者: chuegou (chuegou)   2019-10-08 08:40:00
我猜因為_src.dims() <= 2 不成立阿不對 抱歉看錯
作者: yvb   2019-10-09 21:57:00
樓上的猜測, 我想應該很接近答案了.去查CV_OCL_RUN(condition, func)的定義,且印出condition看看
作者: filiaslayers (司馬雲)   2019-10-12 12:42:00
如果是被編譯器最佳化,也有可能是執行順序被改變了
作者: descent (「雄辯是銀,沉默是金」)   2019-11-27 00:03:00
-O0 應該沒有做最佳化

Links booklink

Contact Us: admin [ a t ] ucptt.com