背景
我目前正在为此library编写Go界面。
作为第一步,我尝试通过Go包装器调用/test/test_pc.c
来运行测试。值得注意的是,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()
}
问题
当我尝试从go中运行它们时,执行得到了#34;卡住了#34; (即代码正在执行,但它只是在一个特定的测试中没有进入下一条指令)。 如何找出代码被卡住的原因?如何观察程序的执行流程?
我尝试过
同样,如果我尝试直接使用C(即如果我使用GCC编译并运行它),则代码可以正常工作。因此,GDB也将起作用。
我也试过使用go tools cgo -debug-gcc
,但这只会打印预处理指令。 go tools cgo -gccgo
没有输出任何内容。最后,Go调试器Delve无法调试C调用。
答案 0 :(得分:1)
一些调查显示您唯一真实的选择如下:
printf
或其他伐木。这些选项都不是很好......