Articles of 未处理exception

SharpSSH .NET Library:无法从.NET连接到Linux(Debian)

我试图用SharpSSH连接到Linux,但是我无法连接到Linux。 我想从我的.NET应用程序运行一些Linux命令。 安装说明: SharpSsh – 通过SSH连接到UNIX的.NET库 – 创build帐户@ codeproject.com ( http://www.codeproject.com/Articles/11966/sharpSsh-A-Secure-Shell-SSH-library-for-NET (下载演示项目和二进制文件/ dll文件) – 复制到“SharpSsh”文件夹中 我正在运行此下载附带的sharpSshTest控制台应用程序。 当我通过Putty手动SSH(端口22)到Linux相同的主机/login名/密码,我可以很好地连接。 当通过.NET连接相同的主机和证书时,我得到了Tamir.sharpSsh .NET库中引发的exception。 Unix发行版和版本: $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 5.0.9 (lenny) Release: 5.0.9 Codename: lenny 堆栈跟踪: at Tamir.SharpSsh.jsch.Session.connect(Int32 connectTimeout) at Tamir.SharpSsh.jsch.Session.connect() at Tamir.SharpSsh.SshStream..ctor(String host, String username, String password) at sharpSshTest.sharpSshTest.SshStream() […]

有一个函数来调用堆栈转储在C?

有人可以提供一个C函数的实现,被调用来转储当前的堆栈吗? 这是一个x86 linux系统。 它可以通过两种方式调用:明确地由另一个函数或崩溃后(可能作为陷阱/ int处理程序)。 输出可以是屏幕或文件,如参数(句柄)所示。 如何解开堆栈的明确解释/评论显然是非常有用的。 谢谢。

Linux上来自共享对象(.so)的例外情况

我有一个名为ftest的testing程序。 它加载包含testing的.so文件,并运行它在其中find的testing。 其中一个testing加载并运行一个包含我们的O / RM的Postgres数据库驱动程序的.so。 当Postgres驱动抛出一个在.so文件中定义的exception(或者它链接到的但是ftest没有链接到的),并被testing框架捕获时,exception析构函数会触发一个段错误。 只要编译的exception处于已经被dynamic加载(使用dload)的.so中,就会发生这种段错误。 这种事情在Windows中具有相同的架构正常工作。 我们并不想限制自己只使用来自核心库的exception – 插件应该可以自由地创build自己的exception类,并使它们正常处理。 exception是std :: exception的子类。 有时例外可能在库中定义(如libpqxx),这意味着exception有时也不在我们的控制范围之内。 抛出exception使用类似的东西: throw exception_class( exception_arguments ); 并被捕获使用: catch ( std::exception &e ) { // handler code } 是否有一些特殊的编译器选项需要得到这个工作? 我们是否需要通过throw new exception_class( args )来切换抛出exception(我们不是真的想这样做)?

如何禁用浮点单元(FPU)?

我想在x86系统中禁用FPU / MMX / SSE指令,并且我将实现一个Device-Not-Availableexception处理程序。 我已经提到了Control register的维基页面 ; 看来我必须在cr0寄存器中设置一些标志。 如何在cr0中设置这些标志,并在启动时进行这项工作?

C中没有C ++的exception处理

Linux是否提供了C中的exception处理而不使用C ++? 或者,什么可能是实现这种exception处理的最佳方式? 目标是避免检查每个被调用的函数的返回码,而是使用C ++中的线程安全且便于携带的方法。

.eh_frame和.eh_frame_hdr部分存储的是什么?

我知道,在使用支持exception的语言(如C ++)时,必须向运行时环境提供附加信息,以描述在处理exception期间必须展开的调用帧。 此信息包含在对象文件的特殊部分中,例如.eh_frame和.eh_frame_hdr 。 但是,这些部分存储了什么样的数据结构呢? 我的意思是,他们可以通过使用任何C结构? 他们和GNU汇编代码中的.cfi语句(如.cfi_startproc , .cfi_endproc , .cfi_offset , .cfi_def_cfa_offset , .cfi_personality和.cfi_lsda )有什么关系? 如果他们这样做,这些条款中的每一个在这些部分中造成了什么? .eh_frame_hdr部分与.eh_frame之一有什么关系? 我希望尽可能多的使用C结构的解释。 谢谢。

为什么我的信号处理程序(抛出exception)不止触发一次?

我正在尝试使用sigaction设置exception处理程序。 它适用于第一个例外。 但是sigaction处理程序在第一个exception之后不会被调用,并且第二个信号发生时程序会突然结束。 #include <iostream> #include <signal.h> #include <exception> #include <string.h> typedef void (*SigactionHandlerPointer)(int iSignal, siginfo_t * psSiginfo, void * psContext); using namespace std; void SigactionHookHandler( int iSignal, siginfo_t * psSiginfo, void * psContext ) { cout << "Signal Handler Exception Caught: std::exception — signal : " << iSignal << " from SigactionHookHandler()" << endl; […]

为什么linux内核使用陷阱门来处理divide_errorexception?

在内核2.6.11.5中,除零exception处理器被设置为: set_trap_gate(0,&divide_error); 根据“了解Linux内核”,英特尔陷阱门不能被用户模式进程访问。 但是用户模式进程很可能也会产生divide_error 。 那么为什么Linux以这种方式实现呢? [编辑]我认为问题仍然是开放的,因为set_trap_gate()设置IDT条目的DPL值为0,这意味着只有CPL = 0(读取内核)代码可以执行它,所以我不清楚这个处理程序可能是从用户模式调用: #include<stdio.h> int main(void) { int a = 0; int b = 1; b = b/a; return b; } 这是用gcc div0.c编译的。 而./a.out的输出是: 浮点exception(核心转储) 所以这看起来不像是由0陷阱代码处理的。

从catch块获取回溯

我正在使用backtrace从exception被引发的地方获取信息。 在我的exception的构造函数中,我将回溯存储在std :: string中,并在catch块中为此types的exception打印此回溯。 但我想知道,是否有可能以某种方式在其他exceptiontypes的catch块中获得相同的回溯?

java3D libconfiguration问题

香港专业教育学院遇到一些麻烦configurationjava3D与我的IDE环境… 我已经下载了j3d-1_5_2-linux-i586.zip,并解压j3dcore.jar,j3dutils.jar,vecmath.jar,libj3dcore-ogl.so,libj3dcore-ogl-cg.so并将它们全部添加为“参考库”我的项目文件夹。 这摆脱了我得到的任何编译警告,但是当我编译和运行应用程序时,我得到以下exception! Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) at java.lang.Runtime.loadLibrary0(Runtime.java:840) at java.lang.System.loadLibrary(System.java:1047) at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:231) at java.security.AccessController.doPrivileged(Native Method) at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:200) at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:157) at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:987) at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:299) at Hello3d.<init>(Hello3d.java:10) at Hello3d.main(Hello3d.java:18) 这里也是对源代码的简要介绍。 注意:一旦Eclipse被添加为引用库,Eclipse会自动使用Ctrl + Shift + O自动引入导入库path。 import javax.media.j3d.BranchGroup; import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.universe.SimpleUniverse; public class Hello3d { public Hello3d(){ SimpleUniverse universe […]