首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Emacs 折腾记

在 Windows 下推荐安装到默认路径。我尝试过更改路径安装,比如安装到 D 盘,但是运行时会提示在 C 盘的某个路径下找不到 sbcl.core 文件。...Update: 后来经验证,发现实际上是 sbcl 在安装过程中写的环境变量没有生效导致的,sbcl 在安装过程中会设置两个环境变量,新建一个 SBCL_HOME 值为 sbcl 安装路径,在 PATH...Files (x86)/sbcl/lib/sbcl//sbcl.core 而此时即使完成了后面的步骤,在 Emacs 中运行 slime 会提示 apply: Searching for program...python % 来运行的,但是在 Emacs 里,包括 Evil、eshell、shell 里,如果有等待用户输入的语句如 input 或 raw_input 等,因为 Emacs 只重定向了输出,无法重定向输入...在 ~/.emacs 里添加 (server-start) 这样 Emacs 将在打开时启动一个 Server。

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

    调试程序时,断点是如何工作的?

    调试器会修改程序中断点所在位置的机器指令,通常将指令替换为一条特殊的陷入指令(如INT 3在x86架构中,或BKPT在ARM架构中)。...3、中断与异常机制 无论是软件断点还是硬件断点,当程序执行到断点时,都会触发一个中断或异常。 在CPU触发中断时,操作系统会根据中断号(或异常类型)查找异常向量表,找到对应的中断处理程序。...当中断发生时,操作系统需要保存当前程序的执行状态(如寄存器、程序计数器等),然后将控制权交给调试器或操作系统内核。 这一过程被称为上下文切换。...条件断点:在某些调试工具中,断点可以设置条件,即只有当某些特定条件成立时,程序才会在断点处暂停。例如,只有当变量x的值为100时,程序才会在该位置暂停。...数据断点:某些调试器支持数据断点,也就是设置在某个内存地址上的“监视点”,当某个内存位置的内容发生变化时,调试器会暂停程序。

    9910

    Redis Lua脚本调试

    这意味着在调试Redis Lua脚本时,服务器不会阻塞并可用于开发或者为了并行执行多个调试会话。...请注意,启动调试器时,它将以步进模式启动。它将停止在脚本的第一行,它在执行之前实际执行某些操作。 从这一点开始,您通常会调用step以执行该行并转到下一行。...如果您使用continue以执行脚本直到下一个断点,则不会将命令转储到屏幕上以防止输出过多。 终止调试会话 当脚本自然终止时,调试会话结束并 redis-cli以正常的非调试模式返回。...但是,为了跟踪某些错误,您可能希望保留每个调试会话对密钥空间执行的更改。当这是一个好主意,你应该使用一个特殊的选项,启动调试器ldb-sync-mode中redis-cli。 ....如果你只是中断redis-cli脚本将完全执行,然后会话终止。相反,abort您可以在中间中断脚本执行,并在需要时启动新的调试会话。

    2.7K50

    Visual Studio 调试系列3 断点

    例如,你可能想要查看代码变量的状态或查看调用堆栈的某些断点。 01 在源代码中设置断点 可以在任意可执行代码行上设置断点。...调试时,执行的断点处暂停,在执行该行上的代码之前。 断点符号显示黄色箭头。 ? 当调试器在断点处停止时,您可以查看应用程序,包括变量值和调用堆栈的当前状态。...调用堆栈断点显示在断点窗口具有对应于在函数中的下一步可执行指令的内存位置的地址。 调试器在指令处中断。 ? ? 03 在反汇编窗口中设置断点 若要打开反汇编窗口中,您必须在调试期间暂停。...如果在指定断点条件时使用的语法有效但语义无效,则在第一次命中断点将出现警告消息。 在任一情况下,调试器将中断时它会命中断点无效。 仅在条件有效且计算结果为 false时才会跳过断点。...10 断点已成功设置 (无警告),但未命中 本部分提供信息以对问题进行故障排除时调试器未显示任何警告 – 断点是一个实心的红色圆时主动进行调试,但未命中断点。

    5.4K20

    Visual Studio 调试系列9 调试器提示和技巧

    在某些应用场景中,如果变量超出范围,变量的值甚至可能会发生变化,因此你可能需要密切关注它(例如,变量可能会被当做垃圾回收掉)。你可以在监视窗口中为该变量创建一个对象 ID 来跟踪这个变量。...对于几个其他类型如调试器窗口中显示的数据集和 DataTable 对象,还可以打开内置的可视化工具。 09 在已处理的异常处中断代码 调试器会在未经处理的异常处中断代码。...可以将调试器配置为在已处理的异常处中断代码,方法是配置异常设置对话框中的选项。 要打开这个对话框,请选择调试 > 窗口 > 异常设置。 通过异常设置对话框,你可以让调试器在特定异常处中断代码。...12 将调试器附加到您的应用程序 若要附加到正在运行的应用,调试器将加载为想要调试的应用的相同内部版本生成的符号 (.pdb) 文件。 在某些情况下,了解符号文件的一些知识非常有用。...在调试时,通过选择调试 > 窗口 > 模块 打开模块窗口。 模块窗口可以告诉你,调试器将哪些模块视为用户代码或我的代码,以及符号加载模块的状态。

    3.2K10

    高级调试技巧揭秘:深入了解gdb调试正在运行的进程

    调试器与进程的交互主要通过以下方式进行:断点设置:断点是在程序中设置的一个特殊位置,当程序执行到该位置时,会触发调试器的暂停操作,可以观察程序的状态和变量的值。...观察点设置:观察点是在程序中设置的一个条件,当满足该条件时,调试器会触发暂停操作,使得可以观察特定变量的值或程序的状态。...在某些情况下,调度器锁定可能会导致多线程程序的调试变得困难。调试并发执行的线程:查看线程信息:通过调试器的命令info threads可以查看当前程序中所有线程的信息,包括线程ID、当前位置等。...使用日志和调试输出:在多线程程序中添加适当的日志和调试输出语句,可以跟踪程序的执行流程和线程间的交互。这些输出可以提供有关线程执行顺序和状态的信息。...使用gdb进行性能分析、优化代码和查找瓶颈:编译代码时添加调试符号以便在调试器中查看源代码和变量信息。使用gdb启动程序并设置断点,以便在关键代码段中断程序。

    56500

    调试器之工作原理

    调试器之工作原理 之前对于调试器并没有什么了解,对于很多问题也没什么头脑,比如说attach是怎么做到的,怎么实现运行时断点的。今天来简单了解一下调试器部分功能的工作原理。...以x86的INT3指令为例,在一个位置设置断点后会保存该位置的原指令,之后在该位置写入INT3,当执行到这条指令的时候发生软中断,内核向子进程发送SIGTRAP信号,之后这个信号转发给父进程,此时再用保存的指令替换之前写入的...硬件断点 某些cpu包含调试用的寄存器,通过设置对应的值来控制对应产生中断的pc位置以及一些其他信息。...x86 debug register - Wikipedia cpu在执行代码之前会先确定要执行的地址是否保存在中断寄存器中,同时确认访问的地址是否处于设置了硬件断点的区域内,满足条件后会触发INT1中断...对于常规的调试和attach的本质区别自然是进程间的关系,直接调试中调试器进程和被调试进程互为父子进程,而attach时两者是独立的,也因此有的时候attch会需要管理员权限。

    75310

    CPU 指令 INT n 的深度解析

    例如,当执行 INT 0x21 时,CPU 会从 IVT 中的第 0x21 个条目读取中断服务例程的地址,并跳转到该地址执行相应的代码。...例如,某些硬件中断(如系统时钟)优先级高于软件中断。优先级的设定由硬件电路(如中断控制器)和操作系统共同决定。3. INT n 的实际应用(1) 系统调用在操作系统中,INT n 常用于实现系统调用。...(3) 调试功能调试器(如 GDB)通常使用中断指令(例如 INT 3)实现断点设置。当执行到断点时,INT 3 会触发调试器接管控制权。4....int 21h 调用中断,完成字符串输出。mov ah, 4Ch 指定程序终止功能号。int 21h 再次调用中断,终止程序。5....未来,在某些嵌入式系统或者复古计算机模拟中,INT n 仍将扮演重要角色,为我们提供解决问题的思路和工具。

    9310

    如何解决STM32待机模式无法下载程序问题

    为了解决这个问题,你可以通过以下几种方式来避免进入待机模式或使MCU能够响应调试器: 1.1 使用复位键 在STM32的许多型号中,当MCU处于待机模式时,可以通过按住复位键来强制将其复位,从而跳出待机模式...STM32支持通过某些外设(如外部中断引脚)从待机模式唤醒。 通过在待机模式下配置外部中断(例如,按键或外部信号)来唤醒MCU,然后通过调试接口进行下载。...如果设备处于掉电模式时,某些外设和调试接口仍然保持可用。 2 设置MCU的启动选项 有些STM32型号支持在启动时选择不同的启动模式。 可以在启动模式中设置“低功耗启动”以避免快速进入待机模式。...2.2 修改Boot配置 可以通过外部引脚(如BOOT0)来选择MCU的启动方式,确保MCU在复位时不会直接进入待机模式。 例如,确保BOOT0设置为0,选择系统正常启动,而非直接进入低功耗模式。...5 软件层面避免进入待机模式 在某些情况下,可能在程序代码中不小心让MCU进入了待机模式,导致后续调试无法进行。 你可以在代码中添加防止进入待机模式的逻辑。

    14110

    4.10 x64dbg 反汇编功能的封装

    在x64dbg中,软件断点的实现原理与通用的软件断点实现原理类似。具体来说,x64dbg会在程序的指令地址处插入一个中断指令,一般是int3指令。...这个指令会触发一个软件中断,从而让程序停止执行,等待调试器处理。在插入中断指令之前,x64dbg会先将这个地址处的原始指令保存下来。...这样,当程序被调试器停止时,调试器就可以将中断指令替换成原始指令,让程序恢复执行。 为了实现软件断点,x64dbg需要修改程序的可执行代码。...具体来说,它会将指令的第一个字节替换成中断指令的操作码,这样当程序执行到这个指令时就会触发中断。...另外,由于软件断点会修改程序的可执行代码,因此在某些情况下,设置过多的软件断点可能会影响程序的性能。

    22420

    4.10 x64dbg 反汇编功能的封装

    这个指令会触发一个软件中断,从而让程序停止执行,等待调试器处理。在插入中断指令之前,x64dbg会先将这个地址处的原始指令保存下来。...这样,当程序被调试器停止时,调试器就可以将中断指令替换成原始指令,让程序恢复执行。为了实现软件断点,x64dbg需要修改程序的可执行代码。...具体来说,它会将指令的第一个字节替换成中断指令的操作码,这样当程序执行到这个指令时就会触发中断。...如果指令长度不足一个字节,x64dbg会将这个指令转换成跳转指令,跳转到另一个地址,然后在这个地址处插入中断指令。此外在调试器中设置软件断点时,x64dbg会根据指令地址的特性来判断是否可以设置断点。...另外,由于软件断点会修改程序的可执行代码,因此在某些情况下,设置过多的软件断点可能会影响程序的性能。

    27530

    在生产环境中使用 eBPF 调试 GO 程序

    简介 在调试时,我们通常对了解程序的状态感兴趣。这使我们能够检查程序正在做什么,并确定缺陷在代码中的位置。观察状态的一种简单方法是使用调试器来捕获函数的参数。...调试器会导致程序中断,甚至允许修改状态,这可能会导致软件产生意外故障。 为了更好地捕获函数参数,我们将探索使用 eBPF(在 Linux 4.x+ 中可用)以及高级的 Go 程序库 gobpf。...从功能上讲,eBPF 允许你在某些事件(例如定时器,网络事件或函数调用)触发时运行受限的 C 代码。...Uprobe uprobe 可以通过插入触发软中断的调试陷阱指令(x86 上的 int3)来拦截用户态程序。这也是调试器的工作方式。uprobe 的流程与任何其他 BPF 程序基本相同,如下图所示。...当我们需要观察二进制程序的状态时,BPF 很有用,甚至在连接调试器会产生问题或者坏处的环境(例如生产环境二进制程序)。最大的缺点是,即使是最简单的程序状态的观测性,也需要编写代码来实现。

    1.6K10

    第 1 部分: 在生产环境中使用 eBPF 调试 Go 程序

    简介 在调试时, 我们通常对了解程序的状态感兴趣. 这使我们能够检查程序正在做什么, 并确定缺陷在代码中的位置. 观察状态的一种简单方法是使用调试器来捕获函数的参数....在开发环境中, Delve 和 GDB 工作得很好, 但是在生产环境中并不经常使用它们. 那些使调试器强大的特性也让它们不适合在生产环境中使用....调试器会导致程序中断, 甚至允许修改状态, 这可能会导致软件产生意外故障....从功能上讲, eBPF 允许你在某些事件(例如定时器, 网络事件或函数调用)触发时运行受限的 C 代码....当我们需要观察二进制程序的状态时, BPF 很有用, 甚至在连接调试器会产生问题或者坏处的环境(例如生产环境二进制程序). 最大的缺点是, 即使是最简单的程序状态的观测性, 也需要编写代码来实现.

    1.4K11

    Windows应用程序调试原理全景图

    因此,经常我们的程序发生缓冲区溢出时,会看到大量的“烫烫烫…”,这是因为“烫”的编码正是两个0xCC。   那么?为什么int 3可以让程序中断到调试器呢?...然后使用F5调试运行,输出的内容如下: ? 可以看到,在调试状态下读取到的内容成了0xCC,就是一条int 3指令。这印证了前面的描述。...在保护模式下,它指向了一个具有8*256项的一张表——IDT,中断描述符表。表中指定了当每个中断(或陷阱)出现时,CPU将要执行的处理函数——ISR,中断服务例程。...int 3断点完整过程 至此,对于一个int 3断点中断到调试器的完整过程简化如下描述:   Step 1: CPU执行 int 3时,将通过IDTR寄存器从其中断描述符表中获取中断服务例程,也就是nt...回到Ring3后,调试器交互界面便开始等待我们的操作。这个时候我们的程序看到的现象就是中断到了调试器。

    1.3K20

    Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序

    在某些情况下,这是一种将应用部署的快速方法。 创建发布设置文件时,权限自动将会在 IIS 中设置。 部署发布到本地文件夹并将输出的首选方法复制到 IIS 上的已准备好应用程序文件夹。...在某些情况下,用户名列显示你的应用程序池名称,如IIS APPPOOL\DefaultAppPool。...应在 Visual Studio 中命中断点。 13 故障排除:Windows Server 上打开所需的端口 在大多数设置中,通过安装ASP.NET和远程调试器来打开所需的端口。...所需端口: 80 - IIS必需 4024 - 从Visual Studio 2019进行远程调试时需要(有关详细信息,请参阅远程调试器端口分配)。...UDP 3702 - (可选)在Visual Studio中附加到远程调试器时,发现端口使您可以使用“ 查找”按钮。

    4K10

    基于FPGA的轻量级RISCV SoC

    T3:BIU发出准备好信号, 同时把指令通过BIU的指令输出总线输出给指令解码单元(INS_DEC)开始指令解码。...T3:保持T2状态,当rdy=1时候,在下一个时钟沿进入T4状态,否则等待在T3状态 T4:保持T3状态,在T4周期结束的时候进行数据采样,同时回到等待状态TW。...该定时器在MTIME计时到MTIMECMP之后会产生定时器中断,只有当程序更新了MTIME或者MTIMECMP寄存器之后中断才会被清除。...FLASH部分使用额外的74系列逻辑芯片搭建了复用器,在调试器对系统进行复位时(/RESET为低),此时复用器将FLASH的引脚切换给调试器的MOSI、MISO、SCK、CS使用。...在/RESET为0时(即系统复位), 调试器作为SPI从机,MOSI,MISO,SCK,CS引脚控制系统主板上的外部FLASH;在/RESET为高(即系统正常工作)时,MOSI,MISO,SCK为SoC

    3.4K42

    FPGA 之 SOPC 系列(五)Nios II 软件使用与程序开发 I

    三、调试器 软件调试器(GDB):是强大的、在GNU调试器基础之上的软件调试器。该调试器提供许多基本调试功能以及一些在低成本处理器开发套件中不会经常用到的高级调试功能。...同样的LCD显示也是用写文件的方式(LCD只有输出)。...软件tap:通过执行一条TRAP指令,软件可直接请求将控制传送到中断处理程序。 未定义指令:当处理器执行一条在硬件中没定义的有效指令时,即可生成一个未定义的指令中断。...Ctl0 是程序状态字,它的bit0位是全局中断允许位,1代表允许,0代表禁止。Ctl1是程序状字的堆栈,当发生中断时,由它保留一个程序状态字的备份。...返回值是0时,表示中断注册成功;返回为负数,表明中断注册失败。

    1K20

    Intellij IDEA 2019 debug断点调试技巧与总结详解

    IntelliJ IDEA调试器会话 拖放框架 如果您想在调试时“及时返回”,可以通过“放置帧”操作来完成。如果您的错误有很多的话,这个操作将会帮助到您。...远程调试 在 IntelliJ IDEA 中绝对应该了解的有关于调试的事情就是远程调试了。远程调试意味着将调试器连接到已经在您或其他主机上的特定端口上运行的进程。...断点条件设置 通过设置断点条件,在满足条件时,才停在断点处,否则直接运行。 通常,当我们在遍历一个比较大的集合或数组时,在循环内设置了一个断点,难道我们要一个一个去看变量的值?...勾选Log message to console,则会将当前断点行输出到控制台,如图6.3 勾选Evaluate and log,可以在执行这行代码是计算表达式的值,并将结果输出到控制台。...中断Debug 想要在Debug的时候,中断请求,不要再走剩余的流程了?

    5.4K41

    int 3中断与软件调试

    简单地说,这条指令的目的就是使CPU中断(break)到调试器,以供调试者对执行现场进行各种分析。当我们调试程序时,可以在可能有问题的地方插入一条INT 3指令,使CPU执行到这一点时停下来。...当我们在调试器中对代码的某一行设置断点时,调试器会先把这里的本来指令的第一个字节保存起来,然后写入一条INT 3指令。...大多数调试器的做法是在被调试程序中断到调试器时,会先将所有断点位置被替换为INT 3的指令恢复成原来的指令,然后再把控制权交给用户。    ...4.恢复执行      这里有一个问题,前面我们说当断点命中中断到调试器时,调试器会把所有断点处的INT 3指令恢复成本来的内容。...这样,如果因为缓冲区或堆栈溢出时程序指针意外指向了这些区域,那么便会因为遇到INT 3指令而马上中断到调试器。

    2.5K20
    领券