linux – gdb / ddd程序接收信号SIGILL
发布时间:2020-12-13 18:30:30 所属栏目:Linux 来源:网络整理
导读:我使用c在 Linux中编写了一个非常简单的程序,它使用cURL库从http(基本上开发了一个http客户端请求)下载来自某个网??站的图像. http://curl.haxx.se/libcurl/c/allfuncs.html #define CURL_STATICLIB#include stdio.h#include stdlib.h#include /usr/include/
我使用c在
Linux中编写了一个非常简单的程序,它使用cURL库从http(基本上开发了一个http客户端请求)下载来自某个网??站的图像.
http://curl.haxx.se/libcurl/c/allfuncs.html
#define CURL_STATICLIB #include <stdio.h> #include <stdlib.h> #include </usr/include/curl/curl.h> #include </usr/include/curl/stdcheaders.h> #include </usr/include/curl/easy.h> size_t write_data(void *ptr,size_t size,size_t nmemb,FILE *stream) { size_t written = fwrite(ptr,size,nmemb,stream); return written; } int main(void) { CURL *curl; FILE *fp; CURLcode res; char *url = "http://www.example.com/test_img.png"; char outfilename[FILENAME_MAX] = "/home/c++_proj/output/web_req_img.png"; curl = curl_easy_init(); if (curl) { fp = fopen(outfilename,"wb"); curl_easy_setopt(curl,CURLOPT_URL,url); curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_data); curl_easy_setopt(curl,CURLOPT_WRITEDATA,fp); res = curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); fclose(fp); } return 0; } 我验证了代码,它工作正常.我可以看到图像已下载,我可以查看图像(没有错误或警告).由于我计划扩展我的代码,我尝试安装ddd,并使用调试器,但调试器不起作用,当我尝试使用ddd运行程序时,我的程序会出现某种Signal错误. 这是错误: (Threadd debugging using libthread_db enabled) Using host libthread_db library "/lib/arm-linux-gnueadihf/libthread_db.so.1" Program received signal SIGILL,illegal instruction. 0xb6a5c4C0 in ?? () from /usr/lib/arm-linux-gnueadbihf/libcrypto.so.1.0.0 首先我认为我没有正确安装ddd,所以我回到gdb,但是当我运行程序时,我得到完全相同的错误. (而且我相信我使用的是最新版本的gdb和ddd) 然后我尝试在另一个简单的程序上使用ddd,它不涉及cURL库,而且工作正常! 有谁知道为什么会这样,解决方案是什么?在ddd运行时,我是否需要指向cURL库?但是,在过去,我不记得用不同的库来做这个!也许这是ddd不喜欢的cURL的东西?但是没有调试器,程序运行良好!我会感激一些帮助. 解决方法
我猜它可能是一些指令集检测代码的一部分.只需让程序继续,看看它是否自己处理信号(因为它在gdb之外运行,它可能会这样做).或者,您可以告诉gdb在运行程序之前根本不打扰SIGILL:处理SIGILL传递nostop noprint.
如果程序死了,这只是一个问题,而你的问题并不清楚. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – bash如果在crontab作业中出现statment意外行为
- 一段时间后,从Linux到Mac的SSH转发的X11显示器丢失了
- linux – 如何从适用于其子代的Perl脚本中设置ulimit?
- Linux服务器---博客wordpress
- linux – 如何在bash中将IDN转换为Punycode?
- 使用TACACS(Cisco ACS)验证Linux sshd
- 在Linux上,我怎么知道有多少短暂的端口可用?
- 我的磁盘是否出现故障并导致Linux负载过高?
- linux系统级别的计划任务及其扩展anacrontab
- linux – 共享内存中的Shared_dirty vs Private_dirty