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

看板LinuxDev作者 (shihyu)時間4年前 (2019/10/06 12:55), 編輯推噓4(402)
留言6則, 4人參與, 4年前最新討論串1/1
最近使用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) 想請問一下有什麼辦法解決這問題 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.104.30.127 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1570337721.A.E70.html

10/08 08:40, 4年前 , 1F
我猜因為_src.dims() <= 2 不成立
10/08 08:40, 1F

10/08 08:42, 4年前 , 2F
阿不對 抱歉看錯
10/08 08:42, 2F

10/09 21:57, 4年前 , 3F
樓上的猜測, 我想應該很接近答案了.
10/09 21:57, 3F

10/09 21:57, 4年前 , 4F
去查CV_OCL_RUN(condition, func)的定義,且印出condition看看
10/09 21:57, 4F

10/12 12:42, 4年前 , 5F
如果是被編譯器最佳化,也有可能是執行順序被改變了
10/12 12:42, 5F

11/27 00:03, 4年前 , 6F
-O0 應該沒有做最佳化
11/27 00:03, 6F
文章代碼(AID): #1TcNEvvm (LinuxDev)
文章代碼(AID): #1TcNEvvm (LinuxDev)