运行可执行文件时出现段错误

zodal 2016-01-26 10:55:17
刚开始学c
在运行书上一段代码时程序直接结束并显示‘段错误’

#include<stdio.h>
#include<glib.h>
#include<dbus/dbus-glib-lowlevel.h>
static gboolean send_ding(DBusConnection *bus);

int main(){
GMainLoop* loop;
DBusConnection *bus;
DBusError error;
loop=g_main_loop_new(NULL,FALSE);
dbus_error_init(&error);
bus=dbus_bus_get(DBUS_BUS_SESSION,&error);
if(!bus){
g_warning("connecting failure to D-bus: %s",error.message);
dbus_error_free(&error);
return 1;
}
dbus_connection_setup_with_g_main(bus,NULL);
g_timeout_add(1000,(GSourceFunc)send_ding,bus);
g_main_loop_run(loop);
return 0;
}

static gboolean send_ding(DBusConnection *bus){
DBusMessage *message;
message=dbus_message_new_signal("/com/burtonini/dbus/ding",
"com.burtonini.dbus.Signal",
"ding");
dbus_message_append_args(message,
DBUS_TYPE_STRING,"ding!",
DBUS_TYPE_INVALID);
dbus_connection_send(bus,message,NULL);
dbus_message_unref(message);
g_print("ding!\n");
return 0;
}

编译命令是这样的
gcc `pkg-config --cflags --libs dbus-glib-1` -g -o send dbus-ding-send.c

用gdb调试时结果:
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
strlen () at ../sysdeps/x86_64/strlen.S:106
106 ../sysdeps/x86_64/strlen.S:没有那个文件或目录

求指点
...全文
595 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-01-27
  • 打赏
  • 举报
回复
进程意外退出会在当前目录下产生‘core’文件或形如‘core.数字’的文件比如‘core.1234’ 使用命令 gdb 运行程序名 core或core.数字 进入gdb然后使用bt命令 可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。 如果进程意外退出不产生core文件,参考“ulimit -c core文件最大块大小”命令

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧