小编zne*_*eak的帖子

异常层次结构真的有用吗?

我渐渐明白,我从来没有见过创建子类,但追赶的父类是真正有用的(除,当然,对于基本异常类,对于这一个单一的异常层次结构处导出).

异常层次结构是否真的有用,xor是否应该从语言的基本异常类派生所有异常?

language-agnostic oop exception

10
推荐指数
1
解决办法
207
查看次数

如何调试在启动时启动的进程?

我试图将断点设置为在启动时启动的Windows服务.由于我的一个不幸的错误,该服务强制机器进入一个重启循环:这意味着我无法进入一个稳定的状态,我可以从中部署修复,显然我不能尝试调试服务在一个更方便的时间.

我可以在内核模式下使用windbg.当服务遇到这个wmain功能时,我非常想破解,但我遇到了问题.

到目前为止,我发现使用以下命令加载图像时可以停止:

!gflag +ksl
sxe ld MyServiceExecutable.exe
Run Code Online (Sandbox Code Playgroud)

问题是,一旦它破裂,我发现自己处于一个空洞的过程中,我显然无法设置断点.bm MyServiceExecutable!wmain说它找不到符号,并且断点将被"延迟",但它实际上从未设置或达到.KERNEL32!BaseThreadInitThunk在所有正在运行的进程中,设置断点似乎或多或少地随机工作,到目前为止我没有很多运气来停止我的服务.

windows boot windbg

10
推荐指数
1
解决办法
6077
查看次数

是否可以声明一个在C++中将自身用作参数的函数类型?

例如,是否有任何法律等同于此?

typedef void (*SelfReferencingFnPtr)(int, SelfReferencingFnPtr);
Run Code Online (Sandbox Code Playgroud)

使用clang,这会导致错误"未知名称SelfReferencingFnPtr".

我能想到的最好的是一个operator()接受自己类型的仿函数.

c++

10
推荐指数
1
解决办法
153
查看次数

C#如何保证读/写操作的原子性?

在第5.5节,其读取和对某些类型的写入C#规格状态(即bool,char,byte,sbyte,short,ushort,uint,int,float,和引用类型)被保证是原子.

这激起了我的兴趣.你怎么能这样做?我的意思是,如果我希望读取和写入看起来是原子的,那么我个人的低级体验只能让我锁定变量或使用障碍; 如果必须为每一次读/写操作完成,那将是一个性能杀手.然而,C#做了类似的效果.

也许其他语言(如Java)可以做到这一点.我真的不知道.我的问题并不是特定于语言,只是我知道C#做到了.

我知道它可能必须处理某些特定的处理器指令,并且可能无法在C/C++中使用.但是,我仍然想知道它是如何工作的.

[编辑]说实话,我相信读取和写入在某些条件下可能是非原子的,就像CPU可以访问内存位置而另一个CPU在那里写入.这是否只会在CPU无法一次处理所有对象时发生,例如因为它太大或者内存未在正确的边界上对齐?

c# atomic

9
推荐指数
2
解决办法
7722
查看次数

C#多个异步HttpRequest带有一个回调

我想一次发出10个异步http请求,只在完成所有结果并在单个回调函数中处理结果.我也不想使用WaitAll来阻止任何线程(我理解WaitAll会阻塞所有线程直到完成).我想我想制作一个可以处理多个调用的自定义IAsyncResult.我是在正确的轨道上吗?是否有任何好的资源或示例描述处理此问题?

c# asynchronous httprequest

9
推荐指数
1
解决办法
4505
查看次数

如何覆盖默认的未捕获异常对话框?

当在.NET应用程序中未捕获异常时,虚拟机会向用户显示错误消息.我希望能够显示我自己的错误消息,而不必将catch块放在我的应用程序的顶层(因为这使得调试未捕获的异常更加繁琐).

现在我在AppDomain.UnhandledException事件监听器中显示自己的错误对话框,但仍然显示.NET创建的对话框.我也想避免,Environment.FailFast因为那将绕过我的finally块(我仍然有点依附).

c# exception-handling winforms

9
推荐指数
1
解决办法
1916
查看次数

范围可以用括号括起来并在C中返回一个值吗?

我查看了MINMac OS X 上的定义,发现了这个:

#define MIN(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __a : __b; })
Run Code Online (Sandbox Code Playgroud)

起初并不是那么明显,但是当它扩展时,它会变成对我来说非常奇怪的东西:

int a = 1, b = 2;
// int min = MIN(a, b);
int min = ({
    int __a = (a);
    int __b = (b);
    __a < __b ? __a : __b;
});
Run Code Online (Sandbox Code Playgroud)

实际上,这是一个包含在表达式中的范围,该表达式"返回"最后一个表达式的值.它似乎工作,至少与clang,在范围内几乎任意的代码:

int a = ({
    time_t x = time(NULL);
    if (x % 3 == 1)
        x++;

    x % 10;
});
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这个,我想知道它是不是标准.我知道Visual …

c

9
推荐指数
1
解决办法
348
查看次数

如何手动加载和执行ELF二进制可执行文件?

假设二进制文件是PIC,我如何将其加载到内存中并执行入口点?我这样做是为了熟悉ELF所以execve不允许这样做.

c elf

8
推荐指数
1
解决办法
3503
查看次数

与子进程共享Mach端口

我正在对Mac OS X上可用的不同IPC机制(管道,插座,System V IPC等)进行比较,我想看看Mach端口如何与更高级别的替代品进行比较.但是,我遇到了一个非常基本的问题:跨进程获取端口的发送权限(特别是跨父进程和子进程).

与文件描述符不同,端口通常不会转移到分叉进程.这意味着必须建立一些其他的转移方式.关于这个问题的唯一相关页面就是这个,他们在更新中声明他们的方法不再有效,并且从未得到保证,尽管这种方法是Apple工程师在2009年提出的.(这意味着更换引导端口,现在这样做会破坏XPC.)他们建议的替换使用已弃用的功能,因此这不是一个非常有吸引力的解决方案.

此外,我喜欢旧解决方案的一件事是端口在使用它的进程之间保持相当私密.没有必要广播端口的存在,就像管道(来自pipe呼叫)工作一旦分叉.(如果有另一个解决方案,我可能会忍受它,但它有点烦人.)

那么,如何将发送权从父进程传递到Mach进程到子进程?

macos ipc mach

8
推荐指数
1
解决办法
1458
查看次数

在Swift中使用obj-c typedef

我有一个typedef如下:

typedef NSString VMVideoCategoryType;

extern VMVideoCategoryType *const VMVideoCategoryType_MusicVideo;
extern VMVideoCategoryType *const VMVideoCategoryType_Audio;
extern VMVideoCategoryType *const VMVideoCategoryType_Performance;
extern VMVideoCategoryType *const VMVideoCategoryType_Lyric;
extern VMVideoCategoryType *const VMVideoCategoryType_Show;
Run Code Online (Sandbox Code Playgroud)

我已将此文件包含在桥接头中.但是,当我尝试访问VMVideoCategoryTypeSwift文件时,我收到一个错误:

Use of undeclared type 'VMVideoCategoryType'

有没有办法让这项工作或我必须在Swift中完全重新定义这种类型?

typedef objective-c swift

8
推荐指数
1
解决办法
1689
查看次数