我有一个关于在Xcode和GDB上调试的简单问题.
我经常遇到一个错误:
unrecognized selector sent to instance 0x1081ad0
Run Code Online (Sandbox Code Playgroud)
这使得程序加载到GDB中.有没有一种简单的方法可以从GDB中检查该内存中的实例?
可能重复:
调试R的一般建议?
我最近开始使用browser()函数定义进行调试(一个很棒的工具!).我觉得print()调试一直在减缓我内置调试工具的学习曲线.我失踪了的其他一些人是什么?
我将使用C++进行一些数学计算.输入浮点数是有效数字,但在计算之后,结果值为NaN.我想跟踪NaN值出现的点(可能使用GDB),而不是isNan()在代码中插入很多.但我发现即使是这样的代码也不会在出现NaN值时触发异常.
double dirty = 0.0;
double nanvalue = 0.0/dirty;
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议一种跟踪NaN或将NaN变为异常的方法吗?
我在这里画一个空白的东西应该很简单......
我想做的事情如下:
<my:control runat="server" id="myid" Visible="<%= (is compilation debug mode?) %>" />
Run Code Online (Sandbox Code Playgroud) 我尝试使用lambda函数sort,但是出现了"Segmentation fault"错误.我设法将代码简化为以下内容:
#include <iostream>
#include <algorithm>
int main()
{
const int len = 18;
int intArr[len];
for (int i=0;i<len;i++) intArr[i]=1000+i;
// The following is expected to sort all but the last element of the array
std::sort(intArr, intArr + len -1, [](int a, int b)
{
std::cout<<"("<<a<<", "<<b<<")\n";
return (a<b?-1:(a>b?1:0));
});
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我使用在Ubuntu 11.04(x64)中编译并运行此代码
g++ -std=gnu++0x test2.cpp && ./a.out.
它会打印很多对形式(large_integer,1008),一对(0,1008)和退出"Segmentation fault".
硬件和软件断点之间有什么区别?
硬件断点是否比软件断点更快,如果是,那么如何,以及为什么我们需要软件断点呢?
在目前这一刻,我正在做的是我正在打开Unity,双击我写的那些脚本之一,然后MonoDevelop打开,现在我必须团结一致,而且MonoDevelop我在做Run >> Run with >> Unity Debugger.
在Unity打开之后,当我按下统一播放按钮时,调试会话开始.但只有一次.如果我停止这个会话,Unity或者MonoDevelop我必须重复这整个过程,这非常繁琐.我必须打开Unity,关闭Unity,(我必须关闭它,因为下一步Run >> Run with >> Unity Debugger将打开统一,如果统一已经打开,我会收到错误,说只有一个统一实例可以一次打开一个项目).
我要问的是:
有没有更好的工作流程可以让我摆脱Unity的这种繁琐的开关,每次我停止调试会话时我都会正常启动而不进行这些繁琐的重复工作?
谢谢.
是的,我确信这已被多次隐含地回答,但我似乎无法完全理解它.
如果你有一个(x86)堆栈跟踪(比如,在WinDbg中查看它),并且你看一下寄存器,那么EBP和ESP值相隔x个字节意味着什么?
链接:
举一个最近的堆栈跟踪示例,我有:
0:016> k
ChildEBP RetAddr
1ac5ee8c 76b831bb ntdll!NtDelayExecution+0x15
1ac5eef4 76b83a8b KERNELBASE!SleepEx+0x65
1ac5ef04 0060e848 KERNELBASE!Sleep+0xf
1ac5ef10 76859d77 MyApp!application_crash::CommonUnhandledExceptionFilter+0x48 [...\applicationcrash.inc.cpp @ 47]
1ac5ef98 775a0df7 kernel32!UnhandledExceptionFilter+0x127
1ac5efa0 775a0cd4 ntdll!__RtlUserThreadStart+0x62
1ac5efb4 775a0b71 ntdll!_EH4_CallFilterFunc+0x12
1ac5efdc 77576ac9 ntdll!_except_handler4+0x8e
1ac5f000 77576a9b ntdll!ExecuteHandler2+0x26
1ac5f0b0 7754010f ntdll!ExecuteHandler+0x24
1ac5f0b0 6e8858bb ntdll!KiUserExceptionDispatcher+0xf
1ac5f400 74e68ed7 mfc80u!ATL::CSimpleStringT<wchar_t,1>::GetString [f:\dd\vctools\vc7libs\ship\atlmfc\include\atlsimpstr.h @ 548]
1ac5fec0 6e8c818e msvcr80!_NLG_Return [F:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\eh\i386\lowhelpr.asm @ 73]
1ac5ff48 74e429bb mfc80u!_AfxThreadEntry+0xf2 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp @ 109]
1ac5ff80 74e42a47 msvcr80!_callthreadstartex+0x1b [f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c @ 348]
1ac5ff88 76833677 msvcr80!_threadstartex+0x66 [f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
1ac5ff94 77569f02 kernel32!BaseThreadInitThunk+0xe …Run Code Online (Sandbox Code Playgroud) PHP脚本是否可以返回调用某些命令的行号?我无法描述我想要的东西,所以也许是一个例子.
我有PHP代码在很多场合调用MySQL.第49行是:
$resultDevice = mysql_query("Some SQL;") or die ("MySQL-Error in settingsU line 49: " . mysql_error());
Run Code Online (Sandbox Code Playgroud)
我手动编写的文字"第49行".如果我更改代码,是否可以更新此号码"49"?它会让我的生活更容易调试.当然,我可以将其他一些特定于行的文本放入其中die,但在文本编辑器中更容易找到行.
使用Pandas,我仍然是Python的新手,我在调试Python脚本时遇到了一些问题.
我收到以下警告信息:
[...]\pandas\core\index.py:756: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
return self._engine.get_loc(key)
Run Code Online (Sandbox Code Playgroud)
而且无法找到它的来源.
经过一些研究,我试图在Pandas lib文件(index.py)中做到这一点:
try:
return self._engine.get_loc(key)
except UnicodeWarning:
warnings.warn('Oh Non', stacklevel=2)
Run Code Online (Sandbox Code Playgroud)
但这并没有改变警告信息.
debugging ×10
c++ ×2
asp.net ×1
breakpoints ×1
c# ×1
c++11 ×1
gdb ×1
iphone ×1
monodevelop ×1
objective-c ×1
pandas ×1
php ×1
python ×1
r ×1
stack ×1
visual-c++ ×1
warnings ×1
x86 ×1