我试图在gdb的linux中为创建线程的程序设置一个断点.我想在线程创建时设置一个断点,但不幸的pthread_create是它是一个版本化的符号,我无法得到它的全名.
如果我输入:
catch thread_start
Run Code Online (Sandbox Code Playgroud)
我明白了
Catch of thread_start not yet implemented
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何在gdb中捕获线程创建的最佳方法是什么?
我正在调试一些随机的崩溃错误,但实际上很难深入研究.因为当我打开崩溃转储时,只发现一个错误:
0:000> .exr -1
ExceptionAddress: 00000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0
Run Code Online (Sandbox Code Playgroud)
实际上我没有在代码中设置任何硬代码断点,所以我在google中搜索这个异常,有人说这个异常可能是由于堆损坏引起的.所以我的问题是,是否有任何其他原因导致此异常,除了硬编码断点,调试时手动断点,堆损坏?
另一个问题是,我尝试使用Application Verifier来检查堆损坏,我理解它是如何工作的,app验证器将在堆损坏时触发中断指令异常.但是目前,我在没有app验证程序的情况下运行,谁会提出中断指令异常?
附加信息:当前线程的调用堆栈.
*0:000> k
ChildEBP RetAddr
0012f96c 7c827d19 ntdll!KiFastSystemCallRet
0012f970 77e6202c ntdll!NtWaitForMultipleObjects+0xc
0012fa18 7739bbd1 kernel32!WaitForMultipleObjectsEx+0x11a
0012fa74 3b288523 user32!RealMsgWaitForMultipleObjectsEx+0x141
0012fab8 3b32b9bd msenv!EnvironmentMsgLoop+0x1ea
0012fae4 3b32b94d msenv!CMsoCMHandler::FPushMessageLoop+0x86
0012fb0c 3b32b8e9 msenv!SCM::FPushMessageLoop+0xb7
0012fb28 3b32b8b8 msenv!SCM_MsoCompMgr::FPushMessageLoop+0x28
0012fb48 3b32be4e msenv!CMsoComponent::PushMsgLoop+0x28
0012fbe0 3b327561 msenv!VStudioMainLogged+0x482
0012fc0c 3000a4a6 msenv!VStudioMain+0xc1
0012fc38 30007301 devenv!util_CallVsMain+0xff
0012ff14 3000760c devenv!CDevEnvAppId::Run+0x91f
0012ff30 30007680 devenv!WinMain+0x74
0012ffc0 77e6f23b devenv!License::GetPID+0x258
0012fff0 00000000 kernel32!BaseProcessStart+0x23*
Run Code Online (Sandbox Code Playgroud)
我们的应用程序是Visual Studio包.
以下是!analyze -v的结果
0:000> !analyze -v
*******************************************************************************
* …Run Code Online (Sandbox Code Playgroud) 我有一个列表属性的类,在某些情况下似乎丢失了一个元素.我不知道这发生的时间.
所以我想要做的是设置一个Visual Studio断点,它将在该值发生变化时暂停程序.条件断点在这种情况下不起作用,因为我不知道删除此断点的是什么.
换句话说,我希望我的程序停止myList.Count评估一个新的数字.
关于如何做到这一点的任何想法?
所以我有一堆jQuery函数这个页面.我没有断点,但Firebug总是打破/跳转到JS函数,就像有一个断点,但没有!

它还打破了页面中的一些JS(不是一切).我的意思是,我几次点击"播放"或"F8"继续/停止调试,但后来某些JS功能不再起作用了.当Firebug关闭时,一切正常.
我正在使用Firefox 3.6.13和Firebug 1.6.2.
知道为什么会发生这种情况以及如何解决它?
尝试在使用Firefox作为浏览器的Visual Studio 2010中调试Silverlight 4应用程序时,我无法遇到任何断点.我收到消息"断点当前不会被击中".
debugging firefox breakpoints visual-studio-2010 silverlight-4.0
我有着名的"断点不会被击中.没有为此文档加载任何符号." - 问题并受到此主题的启发:
我启动了调试器,打开Debug - > Window - > Modules,右键单击程序集 - > Symbol Load Information.它指向一个奇怪的地方:
C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files {myProjectFolder}\8df46672\bbaeb99e\assembly\dl3\c29c5e19\aa46dcf7_10dccc01 {myProject} .pdb:符号已加载.
当我删除时,它暂时解决了我的问题{myProjectFolder}.但它仍指向此.pdb文件(VS在删除后重新创建临时文件夹).我想它应该指向bin目录中的.pdb,就像在其他程序集中一样.我该如何解决这个问题?或者这是正常的行为?
对于任何tipps来说......
编辑:它是一个ASP.NET - Project(.NET 4.0),MVC 3.到目前为止还没有包含COM库.我现在再次删除了上面提到的目录,并再次以"断点当前不会......"结束.如果我打开模块窗口,符号状态显示所有程序集的"跳过加载符号."除外App_global.asax.exot9a5x.dll.
编辑2:网站配置为在本地IIS 7上运行.如果我更改为Visual Studio开发服务器,调试工作正常.似乎与IIS有关?
考虑这个多线程程序:
import threading
class SomeThread(threading.Thread):
def run(self):
a = 1
print a
def main():
print 'hola'
someThread = SomeThread()
someThread.start()
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
当我用pdb调试这个程序时,在提示符下我首先在两个print语句的每一个上设置一个断点.然后我继续 pdb打破了print 'hola'.我再次继续看到打印在另一个线程中的效果,但pdb不会中断.
帮助命令没有列出任何东西来切换像gdb这样的线程上下文......所以......在一个线程上下文中是否只能设置一个在另一个上下文中跳转的断点?
在PEP 553 breakpoint()实用程序之前的python版本中,推荐的方法是添加(理想情况下是单行)代码以具有可以在某种条件下忽略的断点(例如,全局调试标志或args.debug标志)的推荐方法。
在Perl中,我习惯于使用$DB::single=1;1;单行,我知道我可以放心地留在代码中,perl code.pl除非明确调用,否则不会影响的正常运行perl -d code.pl。例如:
my $a = 1;
$DB::single=1;1; # breakpoint line
my $b = 2;
print "$a $b\n";
Run Code Online (Sandbox Code Playgroud)
如果我将此代码运行为:perl code.pl,它将运行完成。如果我使用以下代码运行该代码:perl -d code.pl,pdb它将在断点行处停止(而不是在带有my $b = 2;语句的下一行之前),因为它在1;语句后包含一条$DB::single=1;语句;
同样,如果我写:
my $debug = 1;
my $a = 1;
$DB::single=$debug;1; # first breakpoint line
my $b = 2;
$DB::single=$debug;1; # second breakpoint line
print "$a $b\n";
# [...] Lots more code sprinkled …Run Code Online (Sandbox Code Playgroud) 我可以设置断点,但是当我在调试模式下运行时,断点的图标会发生以下变化:
我认为问题出在Android Studio中新版本的Flutter插件上,但我不确定。如何解决这个问题?
我尝试过的: