GBase 8s
其他
文章
精选

南大通用GBase 8s GSDK 错误处理与调试指南

发表于2026-04-01 16:29:5872次浏览6个评论

在使用 GBase 8s 的 GSDK(GBase 8s Software Development Kit)进行开发时,错误处理和调试是确保应用程序稳定性和可靠性的关键环节。本文将详细介绍 GSDK 中的错误码分类、错误信息获取方法以及调试技巧,帮助开发者快速定位和解决问题。


错误码与错误信息


GCI 错误主要分为两类:


GCI 错误:由 GCI 函数调用返回的错误。小于900000的错误代码表明是GCI侧运行时产生的报错信息。 
GCI_SUCCESS (0):操作成功
GCI_SUCCESS_WITH_INFO (1):成功但有警告信息
GCI_ERROR (-1):发生错误
GCI_NEED_DATA (99):需要更多数据
GCI_NO_DATA (100):没有数据


数据库错误:SQL 语句执行时数据库返回的错误。大于900000的错误码表明是Server报错信息,需减900000后结合Server错误码查看。 Server错误码不区分正负值,取绝对值即可。
获取详细错误信息


使用GCIErrorGet获取gci操作失败的错误信息

static void checkerr(GCIError *errhp, int rc)
{
   GCItext errbuf[ERRMSG_LEN];
   ub4 buflen;
   sb4 errcode;
   sb1 errstate[256] = {0};
   if(rc == GCI_SUCCESS) return;
   switch (rc)
   {
       case GCI_SUCCESS_WITH_INFO:
           printf("Error - GCI_SUCCESS_WITH_INFO\n");
           break;
       case GCI_NEED_DATA:
           printf("Error - GCI_NEED_DATA\n");
           break;
       case GCI_NO_DATA:
           printf("Error - GCI_NO_DATA\n");
           break;
       case GCI_ERROR:
           GCIErrorGet(errhp, 0, errstate, &errcode, errbuf, ERRMSG_LEN, GCI_HTYPE_ERROR);
           fprintf(stdout, "Error code ----- %d\nError state ---- %s\nError message -- %s\n", errcode, errstate, errbuf);  
           break;
       case GCI_INVALID_HANDLE:
           printf("Error - GCI_INVALID_HANDLE\n");
           break;
       case GCI_STILL_EXECUTING:
           printf("Error - GCI_STILL_EXECUTING\n");
           break;
       case GCI_CONTINUE:
           printf("Error - GCI_CONTINUE\n");
           break;
       default:
           printf("Error - %d\n", rc);
           break;
   }
}

GCIErrorGet :用于获取详细的错误信息,包括错误码、错误状态和错误消息。

errhp :错误句柄。
errstate :错误状态码。
errcode :错误代码。
errbuf :错误消息缓冲区。

1. 检查返回值:每次 GCI 函数调用后,检查返回值以确定操作是否成功。
2. 使用错误处理函数:编写统一的错误处理函数(如  checkerr ),简化错误处理逻辑。
3. 记录日志:将错误信息记录到日志文件中,便于后续分析和排查问题。
4. 结合 Server 错误码:对于大于 900000 的错误码,减去 900000 后查看 Server 错误码,获取更详细的错误信息。

通过本文的介绍了 GBase 8s GSDK 中的错误处理和调试方法。掌握错误码分类、错误信息获取方法以及调试技巧,可以快速定位和解决问题,提高开发效率。希望这些内容能帮助你在实际开发中更好地使用 GSDK。如果你在使用过程中遇到任何问题,欢迎随时在社区中提问,我们在这里为你提供支持!

评论

登录后才可以发表评论
GBase用户19279发表于 3个月前
1
GBase用户19279发表于 3个月前
2
GBase用户19279发表于 3个月前
3
GBase用户19279发表于 3个月前
4
GBase用户19279发表于 3个月前
5
GBase用户47954发表于 3个月前
感谢作者的精彩分享!