为什么会出现Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 问题?

问题描述:        把列表listview写入notebook里。

在main函数中,

win = create_and_set_a_window();
book = gtk_notebook_new();
gtk_notebook_set_tab_pos( GTK_NOTEBOOK( book ), GTK_POS_LEFT );
gtk_container_add( GTK_CONTAINER( win ), book );
create_page_one( book, win ); //用来创建选项卡1

      在create_page_one函数里

typedef struct _ADD {
    GtkWidget *view;
    GtkWidget *win;
} ADD;

。。。

ADD adder; 

。。。

/*
** 创建列表
*/
view = create_list_view();
adder.win = win;
adder.view = view; 

。。。g_signal_connect( G_OBJECT( button1 ), "clicked", G_CALLBACK( event_to_add ), (gpointer)&adder ); //绑定事件 event_to_add

      在event_to_add函数里

//函数原型:event_to_add( GtkWidget *widget, gpointer data )
。。。
GtkWidget *view;
GtkWidget *win;
。。。
view = ((ADD *)data)->view;
win = ((ADD *)data)->win;
。。。
/*
** 创建个对话框
*/
    dialog = gtk_dialog_new_with_buttons( "添加新用户", GTK_WINDOW( win ), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL );

。。。

/*
** 添加到列表里
*/
model = gtk_tree_view_get_model( GTK_TREE_VIEW( view ) );
gtk_list_store_append( GTK_LIST_STORE( model ), &iter);
gtk_list_store_set( GTK_LIST_STORE( model ), &iter,  USER_ID, user_id, PASSWD, passwd, CLASS, flag, CHOICE, FALSE, -1 );    

。。。

为什么会出现Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 问题?

时间: 2025-01-31 18:47:57

为什么会出现Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 问题?的相关文章

python Exception中的raise、assert

使用raise抛出异常 当程序出现错误,python会自动引发异常,也可以通过raise显式地引发异常.一旦执行了raise语句,raise后面的语句将不能执行. 演示raise用法. try: s = None if s is None: print "s 是空对象" raise NameError #如果引发NameError异常,后面的代码将不能执行 print len(s) except TypeError: print "空对象没有长度" 自定义异常 py

python Exception

1.except:用来捕捉异常,如果没有捕捉到,则向上层exception传递 2.finally:用来保证其代码一定会执行,可以做收尾工作,比如关闭文件等等. 3.在with as 中, 4.try语句执行流程, 首先程序标识try语句启动时候的程序环境(便于后面恢复). 1.遇到异常 1.跳转到第一个匹配的except语句执行,执行完毕,跳到try之后代码执行. 2.如果没有匹配的except语句,则向上传递try之前(传到顶层,则系统处理,终止执行并打印出错信息) 2.如果没有遇到异常,则

python exception的传递

try: block except1: except2: ... 如果block中出现了except,那么会先取匹配except1,如果匹配了,进行处理,程序继续执行. 如果except1没有匹配上,那么继续匹配except2. 如果该层的try except都没有匹配到,那么就会去外层的try except去匹配,直到匹配到为止.

GDB调试之二栈溢出

linux下应用程序中经常会发生段错误段错误基本上是由于访问非法内存所导致的如栈溢出.数组越界访问.malloc/free内存所引起的.在linux下发生段错误时会生成core dump核心转储文件里面记录了发生段错误时的函数调用关系. ubuntu14.04下默认发生段错误时并不产生核心转储文件需要额外的配置通过命令 ulimit -c查看是否允许的core dump文件大小.如果只是临时需要用到可以使用命令ulimit -c unlimited临时打开则发生段错误时会在当前目录下产生core

用GDB 调试Java程序

陈皓 http://blog.csdn.net/haoel 背景 想要使用GDB调试程序,就需要用GNU的编译器编译程序.如:用GCC编译的C/C++的程序,才能用GDB调试.对于Java程序也是一样的,如果想要用GDB调试,那么就需要用GNU的Java编译器--GCJ来编译Java程序. 目前,很多Linux都不会预装Sun的JVM,取而代之是使用GNU的开源编译器来编译和运行Java程序.比如RedHat和Ubuntu,其默认安装都是使用GNU的Java编译器(gcj)和解释器(gij).当

gdb 远程qemu-arm调试

把 c 编译成 arm 指令的可运行文件 /usr/bin/arm-linux-gnueabi-g++ hello.cpp cat hello.cpp #include <stdio.h> void crash(){ char *a=0; *a=0; } int main() { printf("hello world\n"); crash(); printf("after crash\n"); } 直接执行报错.由于 host 是 linux x86

Android gdb so

gdb debug an android application 1.gdb 要有gdbserver 一般模拟器默认装有gdbserver,如2.3.3的模拟器,看一下有没有: D:\Developer\sdk\platform-tools>adb shell ls -l /system/bin/gdb*-rwxr-xr-x root shell 5664 2010-07-01 05:03 gdbjithelpe-rwxr-xr-x root shell 151868 2010-05-11 09

gdb基础知识一

gdb是Linux下c/c++必不可少的调试工具,其强大相较于其他IDE完全有过之而无不及.本文主要介绍gdb的一些基础使用,启动调试器,设置断点,显示变量值,单步执行等. 以下面一段小代码test.c为例,执行环境ubuntu14.04, 32位:   1 #include <stdio.h>   2 #include <unistd.h>   3    4 int sum;   5    6 void swap(int *m, int *n)   7 {   8     int

x/nfu-用gdb查看内存

用gdb查看内存 2007-12-08 12:43 用gdb查看内存 格式: x /nfu <addr> 说明x 是 examine 的缩写 n表示要显示的内存单元的个数 f表示显示方式, 可取如下值x 按十六进制格式显示变量.d 按十进制格式显示变量.u 按十进制格式显示无符号整型.o 按八进制格式显示变量.t 按二进制格式显示变量.a 按十六进制格式显示变量.i 指令地址格式c 按字符格式显示变量.f 按浮点数格式显示变量. u表示一个地址单元的长度b表示单字节,h表示双字节,w表示四字节