如何在 C 语言的 CGI 程序上运行 valgrind - 《波士顿日记》

主要观点[mod_blog](https://github.com/spc476/mod_blog)存在一个内存损坏错误导致崩溃,仅在POST时出现,开发服务器未崩溃是因为操作系统和glibc版本的差异。使用[valgrind](https://valgrind.org/)可帮助找到问题,通过添加代码捕获 CGI 程序运行的环境并将其写入文件,再用valgrind调试,同时需处理一些特殊字符并创建输入流。
关键信息

  • 错误存在至少六年,上次使用网页界面是七年前。
  • 为捕获环境添加代码extern char *envriron; FILE *fp = fopen("/tmp/env.txt","w"); for (size_t i = 0 ; environ[i]!= NULL ; i++) fprintf(fp,"export %s\\n",environ[i]); fclose(fp);
  • 以特定格式创建包含环境变量的文件并使用valgrind调试,如valgrind $HOME/source/boston/src/main <r.stdin
    重要细节
  • 程序在开发服务器和生产环境下表现不同。
  • 需处理环境变量中的特殊字符,如星号和分号。
  • 可通过特定格式的链接访问不同日期的页面,如[https://boston.conman.org/2000/08/01](https://boston.conman.org/2000/08/01),且链接的颜色 shading 可表示距离远近。所有提及的品牌等名称都被视为受保护和商标的实体。
阅读 9
0 条评论