精华内容
下载资源
问答
  •  当我们运行程序的时候,调用webservice,但是webservice并不是启动项目,这样webservice中设置断点就无法命中,即无法执行webservice中设置断点。 1、先启动项目。 2、vs 的 调试 --- ...

     当我们运行程序的时候,调用webservice,但是webservice并不是启动项目,这样在webservice中设置的断点就无法命中,即无法执行在webservice中设置的断点。

    1、先启动项目。

    2、在vs 的 调试 --- 附加到进程;弹出 附加到进程 对话框,选中w3wp.exe文件 (前提是需要先将iis中的webservice在浏览器中打开,否则此进程不存在)

    展开全文
  • 当我们运行程序并注意到程序没有象意料的那样执行的时候,通常表明我们发现了BUG。捕捉和修复BUG需要你像侦探一样:本来应该是正常情况的东西出了问题。这是为什么呢?调试既是一门艺术也是一门科学,但你可以按...

    当我们运行程序并注意到程序没有象意料中的那样执行的时候,通常表明我们发现了BUG。捕捉和修复BUG需要你像侦探一样:本来应该是正常情况的东西出了问题。这是为什么呢?调试既是一门艺术也是一门科学,但你可以按如下流程来查找BUG。

    先想想程序期望怎样得到怎样的结果,而实际发生了什么?你期望的和你得到的之间有什么区别?尽可能准确地定位。不是,“圆圈在错误的地方”,而是“我预计在200,100处绘制一个圆圈,但它似乎是在100,200处绘制的。”通过准确地提出问题,你有时可以立即解决问题。“啊哈!也许我在某处交换了x和y的坐标。“

    找到代码中发生意外情况的最早点。错误通常具有级联效应:一旦发生一个错误,就会出现奇怪的行为。所以你想找到第一个出现问题的地方。根据您预期发生的事情和实际发生的情况,列出可能发生最早问题的几个可能的地方。

    在脑海里逐步完成代码。从第一个行代码开始,逐步完成,随时写下变量的值,确保变量的数据类型的正确

    在代码中插入print 语句,可以让你知道函数和语句执行的顺序以及变量的值。当您查看屏幕输出时,您将看到您的程序实际正在执行的操作。然后,您可以插入其他print 语句以更好地了解代码的行为,并且可能会删除先前插入的一些print语句,以减少屏幕中的混乱显示。

    使用PyCharm中的调试工具或其他代码编辑器来逐步执行代码。密切观察变量值,并观察程序计数器移动到的位置。在意外结果发生的那一刻,准确地弄清楚发生了什么。

    PyCharm调试工具

    以下是有关如何在PyCharm中使用调试工具的一些简要说明。

    对于如何运行PyCharm调试工具,您有几个选择。从“ 运行”菜单中,可以选择“ 调试…”,然后从弹出菜单中选择要调试的程序。或者,如果在“ 项目”窗格中右键单击程序名称,弹出菜单将为您提供Debug your_program选项,其中your_program是程序的名称。

    当您开始调试时,“ 控制台”窗格将获得另一个标签为Debugger的选项卡。在该窗格中,您将看到有关该程序的信息。有一个标有”框架”的子窗格和一个标记为“变量”的子窗格。“ 框架”子窗格列出了当前正在运行的功能,最近调用的功能位于顶部。标有变量的窗格显示函数中定义的变量。如果在“ 框架”子窗格中单击某个函数的名称,您将看到该函数中定义的变量。

    一旦在程序上运行调试器,就可以避免通过菜单再次运行调试器。相反,您可以单击控制台或调试器窗格左侧的小错误图标。

    Python代码运行速度太快,您无法遵循它。调试工具允许您在特定位置停止代码,然后在查看变量值和程序计数器时一次运行一行代码。在源代码窗口中,您需要使用断点指定最初停止的位置:程序中的一个位置,一旦程序计数器到达,调试器就会停止,这时你可以控制它。如果单击一行代码左侧的主源代码窗口,则在该行设置断点。你会在每一行都看到一个带有断点的浅粉色圆点。PyCharm允许您仅在存在实际代码的行上设置断点,而不是空行或注释。在开始调试运行之前,您需要设置至少一个断点; 否则,程序将像你没有调试一样运行。

    当程序计数器到达带有断点的行时,您的程序现在将暂时停止。带有断点的代码行在我的Mac上以蓝色突出显示(计算机上的颜色可能不同)。这行代码是程序计数器当前的位置。“ 变量”子窗格将显示可用变量的名称和值。

    如果右键单击“ 变量”子窗格中的变量名称,则可以选择其中一个选项来设置变量的值。这样,如果变量的值不正确,并且您希望看到程序在具有正确值时的行为,则无需重新开始。当然,您需要在某个时刻编辑程序,以便变量获得正确的值,而无需您干预调试器。

    调试器窗格顶部的按钮允许您更好地控制程序。从左到右:

        显示执行点:单击此按钮将直接转到当前正在执行的行,无论您在“ 框架”子窗格中单击了哪个功能,它还将在“ 变量”子窗格中显示函数中的变量当前正在执行的行位于。

        跳过:单击此按钮会导致执行一直运行到当前函数或文件中的下一行,跳过在当前程序计数器处调用的任何函数。如果当前行是函数中的最后一行,则执行将移动到此函数返回后立即执行的行。

        单步执行:单击此按钮可使调试器进入当前程序计数器调用的函数。

        强制进入:单击此按钮会使调试器进入当前程序计数器调用的函数,即使要跳过此函数也是如此。

        跳出:单击此按钮会使调试器完成当前函数的执行,在此函数返回后立即停止执行该行。

        运行到光标:单击此按钮可恢复程序执行并暂停,直到程序计数器到达编辑器中当前光标位置的行。不需要断点。实际上,在插入符号处为当前行设置了临时断点,一旦程序执行暂停,该断点就会被删除。因此,如果插入符号位于已经执行的行中,则程序将刚刚恢复以进一步执行,因为无法回滚到先前的断点。当您深入了解函数调用并需要一次性退出多个函数时,此操作特别有用。如果在将您带到指定行之前为应执行的行设置了断点,则调试器将在第一个遇到的断点处暂停。PyCharm网站建议您在特定行需要一种临时断点时使用此按钮,此行不应中断程序执行。你可能根本不会使用这个按钮。

        评估表达式:单击此按钮将打开一个窗口,您可以在其中键入表达式,包括当前活动的变量,并查看结果。

    如果您不记得哪个按钮是哪个按钮,请将光标悬停在按钮上,直到看到工具提示。

    使用调试工具是一个很好的做法,可以准确地了解程序在执行时的行为,并且您应该养成经常在代码上运行调试器的习惯。

    调试图形程序有点棘手。幕后发生了一些事情来绘制窗口。尝试设置PyCharm窗口,以便在程序执行时可以看到图形窗口。(您可以使用恢复按钮,它看起来像一个“播放”按钮,继续运行程序,直到它到达另一个断点。)另请注意,窗口可能看起来不正确,因为当您单步执行程序时窗口没有被重绘。您可以插入request_redraw调用以使窗口更新。

    您总是可以在代码中插入print语句,以告诉您代码正在做什么以及变量值是什么。

    调试示例

    这是来自buggy.py的一些错误代码:

    # Buggy program to print out the prime numbers between 2 and 100

    # CS 1 debugging example by Devin Balkcom, April 4 2015

    possible_prime = 2

    print "Prime numbers between 2 and 100: "

    while possible_prime < 100:

    possible_factor = 1 # bug 2

    # start by assuming the number is prime.

    prime = True

    # then use a loop to test whether that is correct by checking possible integer factors

    while possible_factor <= possible_prime: # bug 4

    # If the number is evenly divisible by the possible factor, then it's not a prime

    if possible_prime / possible_factor == 0: # bug 3

    prime = False

    # Don't need to check any more factors.

    # Terminate the loop early:

    break

    possible_factor += 1

    if prime:

    print str(possible_prime) + " "

    possible_prime += 1 # bug #1

    我们的期望是将整数从2循环到100.对于每个整数,我们循环所有可能的因数。如果存在因数而且不是1和它本身,那么这个数字不是素数,我们可以继续下一个数字。

    同时,如果我们寻找所有可能的因数,却没有找到它们,那么这个数字是素数。打印出来。

    当我们第一次运行代码时,我们发现它在无限循环中打印了2次,而不是我们所期望的。我们逐步调试,观察变量值,我们发现possible_prime即使我们预期它也没有得到更新。实际上,我们注意到调试器完全跳过该行。闭环显示该行possible_prime += 1实际上在while循环之外。从未被调用过。死代码!怎么解决,缩进这一行。

    然后我们再次运行代码,带着希望在我们心中!它打印所有数字2到99,我们很伤心。2素数,好的。3素数,好的。但是我们预计4不会成为素数,可是4也被判断为素数。因此,我们运行调试器,单步执行,直到我们得到的情况possible_prime = 4和possible_factor = 1。然后我们小心翼翼。等待!当然4可以被1整除!我们应该从possible_factor2 开始。

    有了这个线索,我们非常仔细地看待循环的状况。possible_prime / possible_factor == 0。由于4/2为2,因此条件为False。但是我们期望这个检查测试这是否是一个整数因子,如果是这样,则报告True。我们的测试报告False。哦。/是指没有余数,而模数运算符则计算余数。我们想要的是possible_prime % possible_factor == 0。修改这一行。

    继续调试!我们运行代码,这次……它报告在2到100之间没有素数。站起来。深深地呼吸。没关系。

    我们期待什么?2应该是素数。我们运行调试器,并注意即使’possible_prime’的值为2,if语句的主体也会执行。奇数。第possible_factor一次发生时为1。哦。2 % 1确实是0,所以我们认为1是整数因子。事实上,它是。但我们忘记了即使素数也有1作为整数因子。所以我们应该开始检查possible_factor = 2。我们改好了。

    我们运行代码,然后呢,它报告在2和100之间没有素数。运行调试器。转到’possible_prime’的值为2的情况,因为2确实是真的。我们发现if语句的主体possible_factor在值为2 时被执行。当然!素数可以被自己整除!当possible_factor

    我们做了最后的修复,它的确有效!

    这是一个人为的例子。通常情况下,您一次只能立即追踪一个错误。您可以通过执行以下操作来减少必须捕获的错误数量:

    在写代码之前先仔细思考(避免可能的错误)

    经常测试你的代码。

    重新整理代码也可以提供帮助。我们可以编写一个小函数来测试一个数字是否具有除1或其自身之外的任何因子,并且单独测试(如果出错的话,还需要调试)。然后编写循环以打印出素数会很容易。

    展开全文
  • Idea下条件断点DEBUG

    2020-06-30 11:01:15
    断点调试是指自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。 简而言之就是...

    一、断点调试

    断点调试是指自己在程序的某一行设置一个断点调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。

    简而言之就是让程序执行到哪、怎样执行受控,方便程序员观察执行进度及上下文变量信息从而发现BUG。

    二、断点调试步骤

    1、在任何 java 代码行的左边点击后会出现红点(且红点上有对号才可以),即设置断点即成功

    2、邮件DEBUG方式运行

    3、运行后程序会执行到第一个断点处暂停,且程序是停在断点代码所在行运行前

    4、可以用F6 StepOver 跨越到下一个断点;F5 Step Into跳入到当前断点处下一步要执行的方法代码位置(比如断点当前行);F7 Step Out跳出方法,和跳入是相对的(当然每个IDE快捷键可能不同)

    三、条件断点调试

    当我们调试某个FOR循环中的代码块时,并且只想调试 i==88 为true的时候,就需要用条件断点:

    /**
     * 测试条件断点
     */
    public class TestConditionalDebug {
        public static void main(String[] args) {
            for (int i = 0; i < 100; i++) {
                //在下方代码左侧打上断点,并在断点上右键并输入 i==88,DEBUG运行后会直接跳到 i=88处
                System.out.println(i);
            }
        }
    }

     

    展开全文
  • 怎样在VC++下调试COM对象

    千次阅读 2003-08-24 15:35:00
    怎样在VC++下调试COM对象 调试进程外服务(Debugging Out-Of-Process Server) 因为服务的方法和事件的实现要靠客户来触发,所以调试... 在服务程序代码中设置断点既可调式。方法二:(在客户工程中启动调试任务)

    怎样在VC++下调试COM对象

     

    调试进程外服务(Debugging Out-Of-Process Server<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

      因为服务的方法和事件的实现要靠客户来触发,所以调试服务必须要先启动客户程序。

    方法一

         1. Project àSettingDebug Tab上输入客户程序;

         2. 在服务程序代码中设置断点既可调式。

    方法二:(在客户工程中启动调试任务)

         1. 打开客户工程,设置为Debug编译模式;打开JIT Jst-In-Time )选项。

            [ ToolàOptionàDebug Tab] 选定 "Just-In-Time Debugging "

            "OLE RPC Debugging" 选项。

     

    <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2003-8-231442390.gif

        

        2. 在代码中,调用服务的那行代码处设置断点,启动Debugger运行客户程序;

        3. 当调试在断点处(调用服务处)停止时,跟进(Setp Into)调用,如果你的应用

           程序连到了MFCVC会自动打开进入到正确合适的代码处;

        4. 用步进( Step Over )调试直至出现汇编,在客户stub DLL的开始处标记;

        5. 继续运行通过StubProxy单步调试,当步进到服务的方法时,VC会自动启动

           debugger的另一个实例。

     

    < 参见MSDN  "HOWTO:Debug OLE Application >

     

    Debug the Message ActiveX Control

        [Project àSetting à Debug Tab,在"Executable For Debug Session" 的中选

        择合适的程序]

     

    调试远程对象(Debug Remote Object

     

    Attaching the Debugger to a Remote Process

     

        1. 打开客户程序,设置好断点;

        2. Debugge运行程序直至触发断点,确定此此时对象在服务方已被激活;

        3. 在组件所在的机子上启动VC,激活Attach To Process命令,从弹出的进程列表

            框中选择组件或她的Surrogate,使Debugger吸附到对象的进程中。

        4. VC环境中打开组件源代码,设置好断点;

        5. 在客户端,恢复运行程序,当远程对象运行到断点时,停止。

    展开全文
  • 使用BabeLuacocos2d-x编辑和调试Lua BabeLua是一款基于VS2012/2013的Lua集成开发环境。...高速搜索,注入宿主程序内对Lua脚本进行调试,设置断点观察变量值。查看堆栈信息等功能。 怎样安装Babe...
  • Eclipse使用debug技术

    2011-04-04 23:18:08
    1、在程序中设置断点 2、在运行J2SE程序时使用debug模式运行,程序执行到断点时会自动启动debug模式 [b]二、debug模式中的操作[/b] 1、三个键的操作:F5、F6、F8 F5:在执行代码时进入方法内部进行查看,其他...
  • 第三章习题答案Pentium的指令系统 习题序号不对应 问答题 断点中断是指怎样一种中断在程序调试有什么作用 断点中断指令有什么特点设置断点过程对应了一种什么操作这种 操作会产生什么运行结果 答断点中断即中断...
  • 问题32 怎样利用Uitable对象列名、行名或单元格输入上下标和希腊字母 313 问题33 如何更改菜单项的字体大小,如何设置菜单项的字体颜色 313 问题34 如何逐个输出坐标轴内的图形到单独的图片 314 问题35 ...
  • 调试存储过程73

    2016-05-02 00:41:00
    简介 Visual Studio 提供丰富的调试体验。我们只需按几个按键或点几下...正如可以在 ASP.NET 的代码文件类或业务逻辑层的类的代码中设置断点一样,也可以在存储过程中设置断点。 本教程将介绍,怎样在 Visual S...
  • gdbserver调试ubuntu上的程序,使用vs 2017编译直接F5调试 可执行文件添加断点是可以进行调试的。...动态库添加断点,也提示“当前不会命中断点”,请问VS2017该怎样设置才能调试动态库的函数?
  •  开始运行不调试是指以执行模式运行,会完整执行编译生成的那个可执行文件,即使程序中设置断点,也不会暂停,适合于运行程序直接观察最终运行效果。  开始运行不调试的按钮:  怎样在菜单显示该按钮:  ...
  •  前面我们已经VisualStudio建立并编写了一个简单的不能再简单的控制台程序了,接下来我们学着怎样去debug成功程序,接着上一篇.NET/C#入门之开发控制台应用编辑的代码进行 2.设置调试模式 3.给...
  • 将EIP压入栈,jmp地址怎样获取当前代码执行地址r0-r7寄存器是干什么的fs寄存器线程同步ssdt数据库TCP UDP的区别TCP粘包问题怎么解决tcp建立连接的过程分析过什么大型程序三大断点的原理怎么一个内存分页,设置多个...
  • vc调试 main的参数

    2008-09-08 16:24:35
    a问:我要VC下下断点调试,但是程序Main需要输入两个参数才能运行,怎样设置才能单步调试啊? 如:我必须cmd窗口键入 test.exe aa.bmp 才能运行,怎么单步调试,设置两个路径参数?答:VC里有输入main参数的选项。...
  • 如何在程序中动态得到字段的数据类型 如何手动注册数据源 如何在程序中实现数据源的注册 在Visual C++ 6.0中如何利用UDL文件来建立ADO连接 如何通过ADO接口连接数据库 如何通过ADO的记录集获得每条记录的信息 如何...
  • 实例005 怎样在添加对话框资源时创建对话框类 实例006 在工作区管理多个工程 实例007 创建MFC ActiveX工程 实例008 创建ATL工程 实例009 创建控制台应用程序 1.2 开发环境设置与使用 实例010 怎样定制自己...
  • 实例005 怎样在添加对话框资源时创建对话框类 实例006 在工作区管理多个工程 实例007 创建MFC ActiveX工程 实例008 创建ATL工程 实例009 创建控制台应用程序 1.2 开发环境设置与使用 实例010 怎样定制自己...
  • Visual C++ 2008入门经典--详细书签版

    热门讨论 2013-02-02 16:07:15
     ◆ 使用标准模板库(stl)来组织和操作本地c++程序中的数据  ◆ c++程序调试技术..  ◆ 构造microsoft windows应用程序的技术以及每个应用程序的基本元素  ◆ 创建和使用常用控件构建应用程序的图形用户界面  ◆...
  •  ◆ 使用标准模板库(stl)来组织和操作本地c++程序中的数据  ◆ c++程序调试技术..  ◆ 构造microsoft windows应用程序的技术以及每个应用程序的基本元素  ◆ 创建和使用常用控件构建应用程序的图形用户界面  ◆...
  • 260 在程序中定义静态变量 261 创建自己的变量类型:typedef关键字 262 理解变量的作用域 263 理解左值(1value) 264 理解NULL 265 理解void类型 266 理解指向变量的指针 267 声明和初始化指向变量的指针 268 理解...
  • 260 在程序中定义静态变量 261 创建自己的变量类型:typedef关键字 262 理解变量的作用域 263 理解左值(1value) 264 理解NULL 265 理解void类型 266 理解指向变量的指针 267 声明和初始化指向变量的指针 268 理解...
  • 260 在程序中定义静态变量 261 创建自己的变量类型:typedef关键字 262 理解变量的作用域 263 理解左值(1value) 264 理解NULL 265 理解void类型 266 理解指向变量的指针 267 声明和初始化指向变量的指针 268 理解...
  • 260 在程序中定义静态变量 261 创建自己的变量类型:typedef关键字 262 理解变量的作用域 263 理解左值(1value) 264 理解NULL 265 理解void类型 266 理解指向变量的指针 267 声明和初始化指向变量的指针 268 理解...
  • C#开发典型模块大全

    2014-03-12 18:11:22
    4.2.3 如何将接口程序加载到其他程序中 82 4.2.4 怎样操作RichtextBox控件的选择文本 82 4.2.5 如何获取数据表中字段的描述信息 83 4.3 设计过程 83 4.3.1 获取数据表中字段的中文信息 84 4.3.2 添加数据...
  • asp.net知识库

    2015-06-18 08:45:45
    ASP.NET 2.0 创建 Web 应用程序主题 ASP.NET 2.0 的数据访问 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了! 将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 ...
  • 易学C++,C++入门

    2009-12-06 14:30:11
     11.2.2 C++程序中头文件的作用   11.2.3 头文件和源文件   11.2.4 细说#include   11.2.5 #include中尖括号和双引号的区别   11.3 更快更好地完成程序调试   11.3.1 如何检查语法错误   11.3.2...
  • android开发入门教程--上(完整版)

    千次下载 热门讨论 2011-01-24 11:26:39
    5.2.1 设置断点 5.2.2 Debug项目 5.2.3 断点调试 5.3 本章小结 第6章 磨刀不误砍柴工——Android应用程序结构介绍 6.1 Android体系结构介绍 6.1.1 应用程序(Application) 6.1.2 应用程序框架(ApplicationFramework)...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

怎样在程序中设置断点