学习
实践
活动
专区
工具
TVP
写文章

解决VS2015无法调试问题

昨天调试一个DLL,添加输出信息吧,太麻烦而且不轻易定位, 但设置断点后按“F5”,断点不可用,气泡提示“当前不会命中断点,还没有为该文档加载任何符号。 把 exe (以及相关的其它文件,假如有)拷贝到 DLL 目录下,就可以调试了。 犯了个低级错误。 但也总结了一下不能调试的各种可能原因: 解决方案配置是 Debug ,但没有在工程属性页中“Alt+F7”->“配置属性”->“C/C++”->“常规”->“调试信息格式”, 选择“用于“编辑并继承”的程序数据库 另外,在“配置属性”->“链接器”->“调试”->“生成调试信息”中,选择“是”。 然后调试时都会遇到工程运行和exe文件运行,工作路径是不一样的。所以多留心

1.4K20
  • 广告
    关闭

    有奖征文丨玩转 Cloud Studio

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TinyFox在VS2015上的调试

    这个一个TinyFox在VS2015上的调试工具 ; 开源了 https://github.com/maxzhang1985/TinyFoxDEBUG 开发这个工具的初衷,是想更便捷的调试Nancy Web 配置如下: 在VS2015菜单栏,选择Tools -> External Tools 新建一个项目:    Command: 调试器程序路径             Arguments: $(SolutionFileName 在VS2015菜单栏,选择Tools -> Options -> Environment -> Keyboard 在Show commands containing:里键入 tools.externalcommand 配置成功后就可以在VS2015里Build的项目后,再将项目Publish到Tinyfox的wwwroot目录里。 按快捷键试试,可以一键调试了。 如果Tinyfox可以命令行指定目录的话就可以真正的一键调试了。 修改一下的话,也可以一键远程调试哦。

    40030

    IDEA多线程调试

    , "线程3"); thread1.start(); thread2.start(); thread3.start(); } } 调试问题重现 [在这里插入图片描述] [在这里插入图片描述] [在这里插入图片描述] 可以看到调试的时候会在多线程之间乱跳,很不利于问题的排查。 而且似乎线程的第一个断点没有走。如何设置断点每个线程都会走呢? 设置断点每个线程都会走 右键断点,点选Thread [在这里插入图片描述] 设置只调试一条线程 右键断点,点选Thread,同时加上currentThread.getName().equals("线程1 当然这个其实是有一定的问题的,因为项目里面用的线程一般是线程池,我们也很少去指定线程的名称,所以这个方法有一定的缺陷,有其他好的办法欢迎评论区指出。

    41360

    C++多线程-多线程调试

    软件调试是我们软件开发过程中的重要一课。在前面,我们也讨论过程序调试,比如说这里。今天,我们还可以就软件调试多讲一些内容。比如说条件断点,数据断点,多线程断点等等。 (3)多线程调试 在VC上面对多程序的调试比较简单。如果想要对程序进行调试的话,首先F10,开始运行程序。 a)单击【Debug】,选择【threads】,那么我们就可以开始多线程调试了; b)如果需要对某一个thread挂起,单击对应的thread,选择【suspend】即可; c)如果需要对某一个thread ,那么此时所有的线程都挂住了,如果你step运行,所有的threads都会参与运行; f)如果需要对某一个thread进行调试,那么需要对其他的thread进行suspend处理 。 总结: 1)看内存、看堆栈、条件断点、数据断点需要综合使用, 2)编程越早调试,越好, 3)先编写好单线程程序,再编写好多线程程序, 4)对于多线程来说,模块设计 > 编程预防 > 调试 > 事后补救

    2.2K20

    GDB多线程调试分析

    0x00: 在Linux系统上Gdb提供了一组多线程调试命令,如表所示: ? 多线程调试的主要任务是准确及时地捕捉被调试程序线程状态的变化的事件,并且GDB针对根据捕捉到的事件做出相应的操作,其实最终的结果就是维护一根叫thread list的链表。 thread.c:文件它的任务非常简单,就是多线程调试命令子集的实现,比如info threads。 当用户在gdb命令行敲入多线程调试命令子集中的命令时,就会调用thread.c中对应的函数。 整个linux多线程应用程序本地调试的结构框架如下: ? 从上图可以看到当调试linux多线程程序时,就会使用thread_db_ops中的相应的函数。 0x03:GDB调试线程 调试进程建立具体的流程下图所示: ?

    86910

    C#多线程调试

    概要 这篇文章主要分享多线程部分调试技巧,在日常的开发工作中会经常遇到多线程调试的需要。在我们调试的过程中会出现断点的焦点在多个线程之间“反复横跳”根本无法集中跟踪某一个线程的操作链路。 那么今天我们来看看如何调试操作。如果有其它需要的可以参考下面微软官方的文档地址。 view=vs-2022 工具:VisualStudio 2022 框架:.NET5 语言:C# 程序:控制台应用 详细内容 开始调试之前我们先需要明白一个概念--“调试条件”。 true) { Console.WriteLine(DateTime.Now); } } } 2.打开线程监控窗口 (需debug启动之后再点开“调试”选项) 3.设置断点 4.设置你需要查看的线程id 编写调试条件 F10开始调试 调试技巧2: 1.编写测试代码 internal class

    16610

    如何调试线程程序

    在上一篇文章《使用 gdb 调试多进程程序 —— 以调试 nginx 为例》我们介绍了如何使用 gdb 调试多进程程序,这篇文章我们来介绍下如何使用 gdb 调试线程程序,同时这个方法也是我阅读和分析一个新的 当然,多线程调试的前提是你需要熟悉多线程的基础知识,包括线程的创建和退出、线程之间的各种同步原语等。 如果您还不熟悉多线程编程的内容,可以参考这个专栏《C++ 多线程编程专栏》,如果您不熟悉 gdb 调试可以参考这个专栏《Linux GDB 调试教程》。 二、调试时控制线程切换 在调试线程程序时,有时候我们希望执行流一直在某个线程执行,而不是切换到其他线程,有办法做到这样吗? ,工作线程不会在单步调试线程时被执行,即使在工作线程设置了断点。

    2.5K20

    C#使用线程窗口调试线程程序

    调试线程程序一般有以下几种办法 1、在日志的某个地方写日志文件。 优点:不会干扰程序的执行,特别是对网络的多线程通信。 缺点:每次都需要打开日志文件以查看进程运行的信息。 2、利用断点进行调试。 优点;直观 缺点;在调试网路通信的时候,使得通信的过程产生延时,导致通信失败。 4、利用vs自带的线程窗口来调试 优点:直观,可以直接从进程图上看到哪个进程是活动进程,哪些进程处于阻塞状态。 一旦断点命中并且你在你想要的线程中,在Visual Studio线程窗口中(在调试调试 - > Windows - >线程时),Ctrl+ A(选择所有线程),然后Ctrl+单击您当前所在的线程。 除了要调试线程之外,您应该拥有所有线程。 单击鼠标右键,然后选择“冻结”。 但是实际上: 冻结/解冻线程是一种不正确的方式,因为其他线程不执行任何代码。 选中“条件”,然后在下拉列表中选择“过滤器” 输入“ThreadId =(当前线程ID)”。 所以所有线程都被执行,但调试器仅在当前线程上命中。

    44220

    C语言:---gdb多线程调试

    3)线程(Thread Stops) 如果你程序是多线程的话,你可以定义你的断点是否在所有的线程上,或是在某个特定的线程。GDB很容易帮你完成这一工作。 threadno指定了线程的ID,注意,这个ID是GDB分配的,你可以通过“info threads”命令来查看正在运行程序中的线程信息。 如果你不指定thread <threadno>则表示你的断点设在所有线程上面。你还可以为某线程指定断点条件。 如: (gdb) break frik.c:13 thread 28 if bartab > lim 当你的程序被GDB停住时,所有的运行线程都会被停住。这方便你你查看运行程序的总体情况。 而在你恢复程序运行时, 所有的线程也会被恢复运行。那怕是主进程在被单步调试时。 A、查看栈信息 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。

    59720

    GDB多线程多进程调试

    gdb多线程调试 gdb提供的多线程调试工具 新线程创建自动提醒 thread thread-id实现不同线程之间的切换 info threads查询存在的线程 thread apply [thread-id-list |step在使用step或是continue进行调试的时候,其他可能也会并行的执行,如何才能够只让被调试线程执行呢? off:不锁定任何线程,也就是所有的线程都执行,这是默认值。 on:只有当前被调试线程能够执行。 step:阻止其他线程在当前线程单步调试时,抢占当前线程。 child:fork之后调试子进程,父进程不受影响。 如果需要调试子进程,那么gdb启动之后,执行`(gdb) set follow-fork-mode child`并在子进程处设置断点。 然后通过断点调试找到除0异常 (gdb) c Continuing.

    9.5K40

    gdb调试线程多进程

    1、info threads:   这条命令显示的是当前可调试的所有线程,GDB会给每一个线程都分配一个ID。前面有*的线程是当前正在调试线程。 2、thread ID:   切换到当前调试线程为指定为ID的线程。 ID1,ID2…等等的线程都执行command命令 5、set scheduler-locking off|on|step:   在使用step或continue命令调试当前被调试线程的时候,其他线程也是同时执行的 ,如果我们只想要被调试线程执行,而其他线程停止等待,那就要锁定要调试线程,只让它运行。    off:不锁定任何线程,所有线程都执行。   on:只有当前被调试线程会执行。   step:阻止其他线程在当前线程单步调试的时候抢占当前线程

    54230

    2018-08-02 IntelliJ IDEA - Debug 调试线程程序IntelliJ IDEA - Debug 调试线程程序

    https://blog.csdn.net/nextyu/article/details/79039566 IntelliJ IDEA - Debug 调试线程程序 新建 MyRunnable public Debug 运行 MyTest.main() 下文默认线程的执行顺序为:线程1->线程2->线程3。(实际情况不一定如此) ? 你会发现 idea 会停在断点处,上面显示当前线程为“线程1”(注意,这里可能为“线程2”或者“线程3”,因为不确定哪个线程先抢到资源)。 然后继续运行程序 F9,跳到下一个断点 ? 你会发现控制台三个线程的日志都打印出来了 线程1-------------进入 线程2-------------进入 线程3-------------进入 也就是说,idea 只停留在了“线程1”的断点上 ,“线程2”和“线程3”的断点直接忽略了。

    1.2K20

    gdb调试线程 如何解死锁问题

    基础_多线程 Q1 gdb调试线程 如何解死锁问题? _data; char __size[__SIZEOF_PTHREAD_MUTEX_T]; long int __align; } pthread_mutex_t; 产生问题2 gdb默认调试当前主线程 thread apply all command 表示 all 所有线程中相应的行上设置断点 你发现一个问题 调试期间(next)不断的不同线程来回切换, (如果谁发现不是麻烦告知) 线程是 cpu调度的最小单位 因为分片原因 cpu不断在不同线程之间切换 注意不是进程进程可以理解为一个主线程 set scheduler-locking on 只调试当前线程 产生问题3 如果进程有 :info inferiors 切换调试的进程:inferior id 如何分析思路 不用gdb: 假如100个线程 此时10个线程因为资源问题产生了死锁 gdb调试会影响业务 可通过日志或者其他方式打印超时锁

    2.3K100

    idea怎么远程debug_idea 多线程调试

    倘若是测试环境,我们还多了一项可供选择的手段——远程调试——将程序在测试环境中以debug模式启动,在本机使用IDEA在工程中设置断点进行调试。 localhost/test 加入Body form-data 参数 id=1,name=marry,Send 测试,返回 success marry,测试OK; 3,测试Demo项目配置支持远程调试 该参数同时包含了一系列的调试选项; **transport **指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于 Windows平台; address 调试服务器的端口号,客户端用来连接服务器的端口号; server=y/n VM 是否需要作为调试服务器执行; suspend=y/n 是否在调试客户端建立连接之后启动 VM; 4,IDEA打包jar 我们打包jar包; 打包后,在target目录下,会生成一个jar包;我们把它复制出来即可; 5,启动jar并且带启动参数支持远程调试

    18820

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 远程调试

      远程调试

      远程调试(Remote Debugging)提供上千台真实手机,随时随地在真机上进行测试,利用云屏技术对测试方式、操作体验进行了优化,随时截图和记录调试日志,帮助应用、移动游戏快速发现和解决问题,节省百万硬件费用,加速敏捷研发流程。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注腾讯云开发者

      领取腾讯云代金券