请问为很么我的程序走不下去?
nebula版本是2.0.1。
是否可以详细说一下单元测试?
没有看到模块名?
你是用 gdb 去启动 nebula-graph的,你启动的时候需要设置args,需要传入
`set args --flagfile ${graph_config_file}', 不然程序就退出了。
单元测试的binary生成在 nebula-graph/build/bin/test
目录下,你可以看到
假如你想通过 gdb 运行executor_test
在build目录下直接运行
gdb bin/test/executor_test
感谢,我已经设置过了,如下,但还是一样的结果
什么结果,我看截图没有任何异常
你 debug的是 2.0 的代码,文章用的是 1.0 的代码,代码都不是一套,2.0 和 1.0 的 graphd架构已经发生很大的变化了。所以你看到的代码不一样是正常的。
1、 你可以在line 56行时 打印一下 FLAGS_flagfile的值, 是不是没有设置对
你设置了肯定就不会报这个错的,你要不把gdb 启动的整个过程截图,不要截一部分
你直接执行 gdb nebula-graph
进去后执行 set args --flagfile /usr/local/nebula/etc/nebula-graph.conf
然后执行 run
然后把这个过程截图下
r 后面就不要加 start program:nebula-graph, 加了就相当于你设置的参数无效了,你又指定一个binary启动了
你通过gdb 启动的话,在你启动目录的 logs 目录是需要你自己创建,所以你需要在当前目录创建个 logs目录 和 pids 目录
感谢!!!
请问为什么程序直接就结束?看源码不是应该等待console来连接吗?
以及我该如何用console端连接我调试的进程?我的目的是想追踪代码,比如添加一个顶点这样的命令是如何走下去的,执行了那些操作,借此来验证我对代码理解的对不对。
有可能是端口被占用了,你可以看下你当前目录 logs下面的nebula-graph.INFO 日志,里面会打印退出的日志。
还有建议你按照编译文档,将编译好的文件安装到安装目录后,用 scripts 下面的脚本启动三个服务 scripts/nebula.service start all
,然后通过 gdb attach graphd_pid 这样去 debug 比较好,不然没有metad和storaged,你没法走通整个流程。
上面没有显示退出的,你可以通过 /usr/local/nebula/scripts/nebula.service status all 看状态的
建议按照这个流程操作:
/nebula/scripts/nebula.service stop all
ps -ef | grep nebula
/nebula.service start all
/nebula/scripts/nebula.service status all
gdb attach graphd_pid
你应该是之前gdb启动的graphd还在,所以你的console 连接的就是你之前gdb启动的graphd服务,
你将 ps -ef | grep nebula-graphd
的进程 kill 掉,然后再通过脚本 /usr/local/nebula/scripts/nebula.service start graphd