前几天帮同事跟踪的一个程序莫名退出,没有core dump(当然ulimit是打开的)的问题.我们知道,正常情况下,如果程序因为某种异常条件退出的话,应该会产生core dump,而如果程序正常退出的话,应该是直接或者间接的调用了exit()相关的函数.基于这个事实,我想到了这样一个办法,在程序开始时,通过系统提供的atexit(),向系统注册一个回调函数,在程序调用exit()退出的时候,这个回调函数就会被调用,然后我们在回调函数中打印出当前的函数调用栈,由此便可以知道exit()是在哪里调用…
1.以wordcount为例 package org.apache.spark.examples import org.apache.spark.{SparkConf, SparkContext} //在任意方法中打印当前线程栈信息(StackTrace) object word1 { def printStackTrace(cls: Class[_]): Unit = { val elements = (new Throwable).getStackTrace System.out.print…
为了方便调式程序,产品中需要在程序崩溃或遇到问题时打印出当前的调用堆栈.由于是基于Linux的ARM嵌入式系统,没有足够的空间来存放coredump文件. 实现方法,首先用__builtin_frame_address()函数获取堆栈的当前帧的地址(faddr), ×faddr(栈帧的第一个单元存放的数据)即当前函数的返回地址,及调用函数中的指令地址.×(faddr-1)是调用函数的栈帧的地址,即栈帧中保存了调用函数的栈帧的地址.由此可知,同一线程的所有栈帧组成了一个链表.遍历此链表,就可以打印…
1. 使用clock_gettime接口即可 2. clock_gettime的使用方法: 2.1 定义一个结构体 struct timespec ts; 2.2 调用clock_gettime获取当前时间戳 clock_gettime(CLOCK_MONOTONIC, &ts); 2.3 打印时间戳 printf("<%d.%d>\n",ts.tv_sec,ts.tv_nsec); 3. 加上此接口后编译链接时需要加上librt库,因为clock_gettime包…
RDIFramework.NET ━ Web中打印的各种方案参考-欢迎补充 做Web开发的同志应该都深有体会,在web程序中打印不再象应用程序中那样便于控制了,web程序天生的一些特性造成了这个缺点,如:打印机在本地,而文件确可能在服务器上:格式如何控制和定制等等,都给我们开发中带来了很多问题,当然有了问题就会有人来研究解决,这里我先对目前流行的几种方式做个简单介绍: 一.IE直接打印 这个不用多说,直接调用window.print或者webrower控件的ExecWB方法来打印.方便快捷,客户…
Email:longsu2010 at yeah dot net 工作中难免遇到需要压缩文件的情况,比如有一千万个小文件,每个文件约100k,如果使用7-zip压缩后可能十几k,可以节省很多磁盘空间. 基于此就可以写一段程序调用7z来压缩这些小文件,压缩后将源文件删除. 7z的下载可以到如下网站,前者英文,后者中文. http://www.7-zip.org/ http://sparanoid.com/lab/7z/ 下载完成后安装即可. 打开命令提示符并切换到7z.exe所在目录(也可将7z拷…
java中的堆.栈.常量池 分类: java2010-01-15 03:03 4248人阅读 评论(5) 收藏 举报 javastring编译器jvm存储equals Java内存分配: 1. 寄存器:我们在程序中无法控制2. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中3. 堆:存放用new产生的数据4. 静态域:存放在对象中用static定义的静态成员5. 常量池:存放常量6. 非RAM(随机存取存储器)存储:硬盘等永久存储空间-----------------…
之前一直有这样的需求,当时问到,也没搜到方法,现在竟然既问到了,也搜到了,哎,世事真是不能强求啊! 在Linux内核调试中,经常用到的打印函数调用堆栈的方法非常简单,只需在需要查看堆栈的函数中加入: dump_stack();或 __backtrace();即可. dump_stack()在~/kernel/ lib/Dump_stack.c中定义 void dump_stack(void){ printk(KERN_NOTICE  "This architecture does not imp…
在很多业务系统里面,越来越多涉及到条形码.二维码的应用了,不管在Web界面还是WInform界面都需要处理很多物料相关的操作,甚至很多企业为了减少录入错误操作,为每个设备进行条形码.二维码的标签,直接在流程中进行扫描处理,仅仅在界面勾选一些处理选项即可,极大提高工作效率,降低出错的几率.本篇随笔介绍如何在基于WInform的DevExpress程序中对条形码.二维码的处理,包括界面展示,报表打印等常规的处理. 1.DevExpress的条形码操作及报表打印 在15.1以上的DevEpxress版…
下面来简单介绍下 android 中的一种调试方法. 在 android 的 app 开发与调试中,经常需要用到打 Log 的方式来查看函数调用点. 这里介绍一种方法来打印当前栈中的函数调用关系 StackTraceElement[] ste = new Throwable().getStackTrace(); if(ste.length >=1) { for(int i = 1; i < ste.length; i++) { Log.d(TAG, "File:" + st…