我目前在寫一Go接口爲這個library的過程。
作爲第一步,我試圖在/test/test_pc.c
中通過Go包裝器調用它們來運行測試。請注意,由GCC編譯的測試很成功。
重要附加信息:值得一提的是,目前我擁有所有想要在import "C"
以上運行的C代碼。原因是relic_test.h
不提供函數原型,因此cgo無法通過像C.foo()
這樣的調用來識別函數。因此,我把所有的test_pc.c
代碼的格式如下:
package main
// #include<>
/*
void test1(){}
void test2(){}
.
.
void testN(){}
*/
import "C"
func main(){
C.test1()
C.testN()
}
問題
Whenn我嘗試從去運行它們,執行被「卡住」(即代碼在執行,但它只是簡單地不去下一條指令)在一個特定的測試。 如何找出代碼卡住的原因?我如何觀察程序的執行流程?
件事我已經試過
同樣,如果我嘗試直接使用C(即,如果我用GCC編譯並運行它),代碼工作。因此,GDB也會工作。 我也試過使用go tools cgo -debug-gcc
,但這隻打印預處理指令。 go tools cgo -gccgo
不輸出任何內容。最後,Go調試器Delve無法調試C調用。
如果你知道如何使用GDB,你不能用它來調試go程序嗎?在鑽石被認爲是可以接受的解決方案之前。我認爲甚至會附帶一些GDB支持腳本... –
最簡單的解決方案通常是'printf'的自由應用程序 – JimB