标签: breakpoints

为什么我的服务在Vista上的DebugBreak()崩溃?

我正在用C++编写Win32服务.我有一个自定义Assert宏调用DebugBreak()(以及其他东西).当我在Vista下运行我的服务时,服务在到达DebugBreak()调用(int 3汇编程序操作码)时崩溃,显示vista崩溃对话框.错误代码是80000003(硬编码断点).

通常我希望我的服务运行在DebugBreak()调用上,而不会在没有附加调试器的情况下执行任何操作.为什么会崩溃?是否有可能进行更改以使其继续运行?

crash service winapi breakpoints windows-vista

3
推荐指数
1
解决办法
1636
查看次数

停止执行我的程序并转到调试器而不设置断点(Visual Studio/GCC和C++)

我前段时间在SO上找到了有关此功能的信息,但主题是Visual Studio隐藏功能(2005-2008)的副本我再也找不到了.

我想用这样的东西:

#ifdef DEBUG
#define break_here(condition) if (condition) ... // don't remember, what must be here
#else
#define break_here(condition) if (condition) return H_FAIL;
#endif
//...
hresult = do_something(...);
break_here(hresult != H_OK);
//...
var = do_other_thing(...);
break_here(var > MAX_VAR);
Run Code Online (Sandbox Code Playgroud)

它必须表现得像一个错误的断点.这就像断言,但没有对话,更轻量级.

我不能在这里使用普通断点,因为我的模块是几个项目的一部分,可以在几个VS解决方案中进行编辑.当在其他解决方案中编辑代码时,这会导致在一个解决方案中设置的断点在源中移位.

debugging cross-platform breakpoints visual-studio

3
推荐指数
1
解决办法
626
查看次数

删除Linux内核3.0.0中的所有硬件观察点

watch varname在GDB中设置第一个(也是唯一可能的)硬件观察点之后,无法通过Delete删除它。

即使我刚刚退出GDB,该监视点似乎也已启用,直到下次重新启动为止。当我尝试在GDB重新启动后设置另一个硬件观察点时,日志中会出现一条内核消息,告诉我所有硬件观察点已被使用。似乎这与设置GDB硬件观察点/如何设置软件观察点中的问题相同,但是由于我需要硬件观察点,因此该解决方案不适用。

是否有工具或系统调用来删除此(或所有)硬件监视点?CPU是Core i5,Linux内核是Ubuntu 11.10(Oneiric Ocelot)的3.0.0-17版本。

linux gdb breakpoints watchpoint

3
推荐指数
2
解决办法
2万
查看次数

iOS应用程序断点正在运行

我是一名经验丰富的开发人员,但是iOS/Objective C的新手.

下面的应用程序构建正常(模数任何错字/ cut'n'paste错误).当我运行它时,它打破了打印方法,使其看起来像是有一些错误.我看不出错误是什么或在哪里.虽然可能是一个真正的newby错误!

任何人都可以通过解释我做错了什么以及如何解决它来帮助我?

这是一个命令行MacOS应用程序,使用Foundation,在XCode中构建和运行.

@interface DayOfYear : NSObject
- (void) print;
- (id) init : (int) day;
@end // DayOfYear

@implementation DayOfYear

int dayInYr =0;

- (id) init : (int) day {
    self = [super init];
    dayInYr = day;
    return self;
}

- (void) print {
     // NSLog(@"In print with %d", dayInYr);

}    // WHEN RUN THIS IS WHERE IT BREAKPOINTS SAYING "Thread 1, breakpoint 1.1, 2.1


@end

int main(int argc, const char * argv[])
{

    @autoreleasepool { …
Run Code Online (Sandbox Code Playgroud)

command-line breakpoints foundation ios

3
推荐指数
1
解决办法
7832
查看次数

如何使用gdb打破基类的构造函数?

我的主要cpp文件是:

class UnifiedDirListQuery : public UnifiedQuery{
public:
    UnifiedDirListQuery(){
        //do something-------------line 12
    }
}
//other code

int main( void ){
    UnifiedQuery *query = new UnifiedDirListQuery();//-----line 56
    //do something
    delete query;
}
Run Code Online (Sandbox Code Playgroud)

并且分别UnifiedQueryunified.h和中声明和定义unified.cpp.当我在gdb中调试这个程序时:

gdb: b 56
gdb: r
gdb: s
Run Code Online (Sandbox Code Playgroud)

程序跳转到第12行.如果例如定义了ctor,如何转到unified.cpp并跳转到Ctor基类.UnifiedQueryunified.cpp : line 25

更新

对于答案break UnifiedDirListQuery::UnifiedDirListQuery,gdb抱怨说:

(gdb) b UnifiedDirListQuery::UnifiedDirListQuery
[0] cancel
[1] all
?HERE
?HERE
> 1
Note: breakpoint -1 (disabled) also set at pc 0x0.
Breakpoint …
Run Code Online (Sandbox Code Playgroud)

c++ gdb breakpoints

3
推荐指数
1
解决办法
5178
查看次数

如何将gdb观察点设置为存储在寄存器中的值?

我正在尝试检测某些函数中的堆栈溢出,并希望将观察点设置为RSP寄存器指向的内存.我不能只将一个观察点设置到某个地址,因为可以从不同的地方调用该函数.所以我想在函数的开始和结束时设置断点,并强制它们启用/禁用观察点.

但是设置观察点的方式都不适合我.例如,wa $rsp观看登记册; 该

set $myvar = $rsp
wa $myvar
Run Code Online (Sandbox Code Playgroud)

使观察点跟踪... $ myvar的变化!不是它存储的价值!

很奇怪,我敢肯定,这应该是一种方式,但我不知道一个......

UPD:看起来我在gdb中发现了一个bug.二:

(gdb) wa *$rsp
Attempt to dereference a generic pointer.
(gdb) set $myvar = $rsp
(gdb) wa *$myvar
Attempt to dereference a generic pointer.
Run Code Online (Sandbox Code Playgroud)

UPD:不知道为什么,但wa &*$myvar设置了$ myvar的断点,但不应该.错误?

stack-overflow debugging gdb breakpoints buffer-overflow

3
推荐指数
1
解决办法
1202
查看次数

Xcode:禁用可可断点

我发现几乎不可能通过断点来调试我自己的代码(特别是与AVFoundation和CoreMedia相关),因为苹果公司在这个框架中有大量的断点.我经常需要跨越大约15-20个连续框架断点(例如com.apple.coremedia.player.async(193):breakpoint 5.2),它们被称为一些汇编代码,以便最终继续执行应用程序.我想知道,有没有办法禁用苹果的框架断点,所以xcode只会停在我的断点上?

debugging xcode breakpoints ios

3
推荐指数
1
解决办法
490
查看次数

打破任何"致命错误:在解开可选值时意外发现nil"

我有一个庞大的代码库,我想打破错误"致命的错误:在解开一个Optional值时意外地发现了nil"

这样做的最佳方法是什么?

我尝试添加两个:(在断点子窗口中)

  • "添加Swift错误断点"
  • "添加异常断点"

但那没有做到.这是否意味着nil在某些框架代码而不是我的代码中?

breakpoints swift

3
推荐指数
1
解决办法
1188
查看次数

break*main VS在GDB中打破main()

break *mainbreak main()本质上有什么区别?例如:

    #include <iostream>
    using namespace std;
    int main()
    {
        int x=30;
        int y=40;
        x=y;
        return 0;
   }
Run Code Online (Sandbox Code Playgroud)

当我使用 break *mainwatch x,它是这样的:

(gdb) b *main
Breakpoint 1 at 0x400674: file aa.cpp, line 4.
(gdb) r
Starting program: /root/dd/aa.out 
Breakpoint 1, main () at aa.cpp:4
4       {
(gdb) n
5               int x=30;
(gdb) watch x
Hardware watchpoint 2: x
(gdb) c
Continuing.
Hardware watchpoint 2: x

Old value = 0
New value = 30 …
Run Code Online (Sandbox Code Playgroud)

gdb breakpoints watchpoint

3
推荐指数
1
解决办法
3676
查看次数

调试VBA,查找问题和故障排除方法

有哪些调试VBA代码的方法?

特别:

  • 单步执行代码
  • 断点和停止命令
  • Debug命令
  • 当地人和观察窗
  • 调用堆栈

debugging vba callstack breakpoints

3
推荐指数
1
解决办法
859
查看次数