gdb调试没有符号表被读取_CKB 脚本编程简介第五弹:调试 | 火星技术帖

a6c6779fa458f5c156e5812c1a6581b1.png

免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。

小编:记得关注哦

来源:NervosNetwork

Xuejie 是 CKB-VM的核心开发者,他在自己的博客「 Less is More」中,创作了一系列介绍 CKB 脚本编程的文章,用于补充白皮书中编写 CKB 脚本所需的所有缺失的细节实现。本文是该系列的第五篇,详细介绍了 CKB 的调试过程,快来一起查看吧 ~^.^~

作者:Xuejie

原文链接:https://xuejie.space/2019_10_18_introduction_to_ckb_script_programming_debugging/

译者:史迪仔

事实上,CKB 脚本工作的层级要比其他智能合约低很多,因此 CKB 的调试过程就显得相当神秘。在本文中,我们将展示如何调试 CKB 脚本。你会发现,其实调试 CKB 脚本和你日常调试程序并没有太大区别。本文建立在 ckb v0.23.0 之上。具体的,我在每个项目中使用的是如下版本的 commit:

• ckb:

7e2ad2d9ed6718360587f3762163229eccd2cf10

• ckb-sdk-ruby:

18a89d8c69e173ad59ce3e3b3bf79b5d11c5f8f8

• ckb-duktape:

347bf730c08eb0aab7e56e0357945a4d6cee109a

• ckb-standalone-debugger:

2379e89ae285e4e639b961756c22d8e4fde4d6ab

使用 GDB 调试 C 程序

CKB 脚本调试的第一种方案,通常适用于 C、Rust 等编程语言。也许你已经习惯了写 C 的程序,而 GDB 也是你的好搭档。你想知道是不是可以用 GDB 来调试 C 程序,答案当然是:Yes!你肯定可以通过 GDB 来调试用 C 编写的 CKB 脚本!让我来演示一下:

首先,我们还是用之前文章中用到的关于 carrot 的例子:

#include int main(int argc, char* argv[]) {  int ret;  size_t index = 0;  uint64_t len = 0;  unsigned char buffer[6];  while (1) {    len = 6;    memset(buffer, 0, 6);    ret = ckb_load_cell_data(buffer, &len, 0, index, CKB_SOURCE_OUTPUT);    if (ret == CKB_INDEX_OUT_OF_BOUND) {      break;    }    int cmp = memcmp(buffer, "carrot
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值