Debugging 如何调试libcurl以解决IMAP问题
我正在开发自己的IMAP应用程序,以便使用IMAP从电子邮件服务器读取和处理特定的电子邮件。我的开发环境是Ubuntu20LTS,使用EclipseCDT 我决定使用libcurl作为电子邮件服务器的接口,因为我在另一个项目中成功地使用了它。我的问题是,当我进行IMAP获取(例如Debugging 如何调试libcurl以解决IMAP问题,debugging,imap,eclipse-cdt,libcurl,Debugging,Imap,Eclipse Cdt,Libcurl,我正在开发自己的IMAP应用程序,以便使用IMAP从电子邮件服务器读取和处理特定的电子邮件。我的开发环境是Ubuntu20LTS,使用EclipseCDT 我决定使用libcurl作为电子邮件服务器的接口,因为我在另一个项目中成功地使用了它。我的问题是,当我进行IMAP获取(例如fetch4(BODY.PEEK[1]))时,我无法看到所有的响应。我可以看到libcurl与服务器正确地对应,并且(通过启用CURLOPT_VERBOSE选项),我确实可以看到libcurl正在从电子邮件服务器接收“丢
fetch4(BODY.PEEK[1])
)时,我无法看到所有的响应。我可以看到libcurl与服务器正确地对应,并且(通过启用CURLOPT_VERBOSE
选项),我确实可以看到libcurl正在从电子邮件服务器接收“丢失的”消息文本。我显然需要说服libcurl给我“缺失”的细节
问题是:怎么做?对于已安装版本的libcurl,我无法从程序调试到libcurl,因为已安装版本的libcurl没有调试符号。我的解决方案如下。curl的源代码可从以下网站获得。我的第一次尝试是安装Curl的最新版本,并使用
sudomakeinstall
在系统中已经安装的库上安装Curl库。这是不成功的,我不得不使用一个备份从我几天前创建的保存点恢复我的Ubuntu系统。幸运的是,我对备份有点偏执!然后,我下载了与我的Ubuntu系统中已经安装的curl版本相对应的curl源代码,并使用/configure--enable debug
选项在本地目录中编译它们,以生成带有调试符号的libcurl调试版本。下一个问题是说服eclipse加载我的本地版本的libcurl,而不是系统版本
解决方案分为两个阶段:
- 首先将eclipse项目设置为包含libcurl的本地版本,如下图所示:
- 现在,在eclipse中为您的项目设置调试配置中的linux
环境变量,以指向包含libcurl.so的本地目录,如下图所示:LD_LIBRARY_PATH
CURLOPT_HEADERFUNCTION
。实现这个回调函数给了我“丢失”的消息数据