AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题

问题[debugging](coding)

Martin Hope
Orion
Asked: 2025-04-28 14:28:01 +0800 CST

如何在剥离的可执行文件中以单步模式启动程序?

  • 6

我有一个想调试的汇编程序。如果这个程序是用符号汇编的,我可以直接在那个位置设置一个断点_start,然后告诉 GDB 运行它,它就会立即中断,因为_start可执行文件的定义就是从那里开始的。

但是,假设这个程序的符号被剥离了。那么,由于该符号不再存在,就无法设置断点了_start。虽然我可以仔细检查可执行文件的头文件来找到定义的程序起始位置,但我已经非常熟悉这个操作了,所以我希望 GDB 能提供“以单步模式运行”的选项。然而,我在网上找不到任何关于如何做到这一点的信息。

debugging
  • 1 个回答
  • 55 Views
Martin Hope
GregF
Asked: 2025-03-30 20:51:18 +0800 CST

当我预计符号不会被评估时,宏中未定义变量:COMMON-LISP-USER::0.25%

  • 6

我有一个宏来为程序定义初始化变量。该宏是...

(defmacro defparm (var value &key (frequency nil) (date nil date-supplied-p))
  "Macro to define starting parameters."
  `(let ((new-value (set-value ,value ,frequency)))
     (cond ((eq ,date-supplied-p t) 
             (set-variation ',var new-value (make-date ,date)))
           (t (setf (slot-value *my-parms* ',var) new-value)))))

该宏依赖于宏 set-value 和 set-variation,以及函数 is-date-p 和 is-percent-p。

(defun is-percent-p (value)
  (cond ((and (symbolp value) (char= (char (symbol-name value) (1- (length (symbol-name value)))) #\%)))
        ((and (stringp value) (char= (char value (1- (length value))) #\%)))
        (t nil)))

(defmacro set-value (value &optional frequency)
  `(cond ((and (typep ',value 'symbol) (is-percent-p ',value))
           (let ((new-value (string-right-trim "%" (symbol-name ',value))))
             (/ (if (find #\. new-value)
                    (parse-float:parse-float new-value)
                    (parse-integer new-value :junk-allowed nil)) 100.0)))
         (t ,value)))

我没有包括 is-date-p,因为它与这种情况无关,并且 set-variation 可以简单地被虚拟出来......

(defun set-variation (&rest x)
  (declare (ignorable x)))

当我评估...

(defparm interest-rate 5%)

我明白了......

(defparm interest-rate 5%); 在:DEFPARM INTEREST-RATE;(SET-VALUE 5% NIL);--> IF IF AND IF TYPEP;==>;1;;捕获警告:;未定义变量:COMMON-LISP-USER::5%;;编译单元完成;未定义变量:;5%;捕获 1 警告条件​​ 0.05 0.05

结果是正确的,0.05,但我不明白为什么会收到警告。

我已经输入(打印 nn)语句以尝试确定出现警告的位置,即评估 '5% 符号的位置,但我找不到它。

我的代码中的“警告”的实际点在哪里?!

debugging
  • 2 个回答
  • 44 Views
Martin Hope
anymous anymous
Asked: 2024-12-05 23:40:23 +0800 CST

java.lang.NoSuchMethodError:没有静态方法 RememberComposableLambda

  • 5

使用此插件启动扫描时 '@capacitor/barcode-scanner'

但我有这个例外:

java.lang.NoSuchMethodError: No static method rememberComposableLambda(IZLjava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/internal/ComposableLambda; in class Landroidx/compose/runtime/internal/ComposableLambdaKt; or its super classes (declaration of 'androidx.compose.runtime.internal.ComposableLambdaKt' appears in /data/app/~~mK_bGGqANgiVGzIdyQh2Yw==/com.mycompany.caisse.debug-ILKcoyuBxwK5azm899YlKw==/base.apk) 
at com.outsystems.plugins.barcode.view.OSBARCScannerActivity$onCreate$3.invoke(OSBARCScannerActivity.kt:204)
at com.outsystems.plugins.barcode.view.OSBARCScannerActivity$onCreate$3.invoke(OSBARCScannerActivity.kt:198)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:428)
at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:252)
at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:251)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:194)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:123)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:122)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)" 

我的配置在那里:

1-构建.graddle(android):

"// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {

    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.2.1'
        classpath 'com.google.gms:google-services:4.4.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

apply from: "variables.gradle"

allprojects {
repositories {
    google()
    mavenCentral()
    maven {
    url 'https://pkgs.dev.azure.com/OutSystemsRD/9e79bc5b-69b2-4476-9ca5-d67594972a52/_packaging/PublicArtifactRepository/maven/v1'
    name 'Azure'
    credentials {
        username = "optional"
        password = ""
    }
    content {
        includeGroup "com.github.outsystems"
    }
    }
}
}

task clean(type: Delete) {
    delete rootProject.buildDir
} 
" 

2-构建.graddle(应用程序):

" 
apply plugin: 'com.android.application'

android {
    namespace "com.mycompany.caisse"
    compileSdk rootProject.ext.compileSdkVersion
    defaultConfig {
        applicationId "com.mycompany.caisse.debug"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 14
        versionName "3.3.2"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        aaptOptions {
            // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
            // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61
            ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    flatDir{
        dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs'
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
    implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion"
    implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion"
    implementation project(':capacitor-android')
    testImplementation "junit:junit:$junitVersion"
    androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
    androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
    implementation project(':capacitor-cordova-android-plugins')
}

apply from: 'capacitor.build.gradle'

try {
    def servicesJSON = file('google-services.json')
    if (servicesJSON.text) {
        apply plugin: 'com.google.gms.google-services'
    }
} catch(Exception e) {
    logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work")
} 
"

3- Graddle 信息:

"
Gradle 8.2.1

Build time:   2023-07-10 12:12:35 UTC
Revision:     a38ec64d3c4612da9083cc506a1ccb212afeecaa

Kotlin:       1.8.20
Groovy:       3.0.17
Ant:          Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM:          17.0.12 (Oracle Corporation 17.0.12+8-LTS-286)
OS:           Windows 11 10.0 amd64
"

使用此插件启动扫描时 '@capacitor/barcode-scanner' 需要帮助来解决此异常

debugging
  • 1 个回答
  • 40 Views
Martin Hope
intrigued_66
Asked: 2024-12-02 08:33:11 +0800 CST

GDB 如何生成核心转储文件?

  • 5

我总是在交互式会话中使用 GDB(gdb --args <program>)

两个问题:

  1. 是否可以配置.gdbinit自动生成核心转储文件?

  2. 与第一个问题相关,如果程序崩溃,是否有 GDB 会话命令可以手动生成核心转储文件?

debugging
  • 1 个回答
  • 26 Views
Martin Hope
vm000
Asked: 2024-11-17 16:36:41 +0800 CST

在 Linux 内核代码中调试 PCIe 交换机配置

  • 6

我正在x86-64上调试 PCIe 枚举和配置,RC 和端点之间有一个 PCIe 交换机。我想添加printksLinux 内核来观察CONFIG 0和CONFIG 1处理 TLP。

哪些内核源文件负责触发和处理这些 TLP?

我已经检查了驱动程序/pci,但需要指导如何确定代码路径。任何调试提示或相关文档的参考都将不胜感激。

debugging
  • 1 个回答
  • 13 Views
Martin Hope
Samuel Alonso
Asked: 2024-09-05 08:52:54 +0800 CST

手动设置“加载”LUA 块的 upvalue 变量

  • 5

我正在为 C++ 和 LUA 项目推出自己的 LUA 调试器,但遇到了一点障碍。我尝试遵循 MobDebug 的实现来设置表达式监视,在删除所有花哨的东西之后,它本质上归结为将要监视的表达式字符串连接到语句中return(...)并运行它。确切的行是:

local func, res = mobdebug.loadstring("return(" .. exp .. ")")

只要您只是调试一个脚本并且大多数变量都位于全局环境中,这就可以完美地工作,但出于我自己的目的,我试图将这些return(...)表达式的评估限制/范围缩小到某些表及其字段。

更具体地说,我正在使用该模式处理一些 LUA“类” setmetatable / __index,并且,如果可以访问该表(我们称之为SomeClass),我希望能够评估如下表达式

self.mSomeVariable + self.mSomeOtherVariable - self:someOperation(...)

其中self指的是SomeClass(即存在SomeClass:someOperation,等等)。

我真的不知道该如何解决这个问题。起初我尝试了以下方法,但显然没有效果。

> SomeClass = {}
> SomeClass.DebugEval = function(self, chunk_str) return load("return(" .. chunk_str .. ")")() end
> SomeClass.DebugEval(SomeClass, "print(1)") // 1 nil
> SomeClass.DebugEval(SomeClass, "print(SomeClass)") // table: 0000000000CBB5C0 nil
> SomeClass.DebugEval(SomeClass, "print(self)") // nil nil

self我甚至无法通过将其直接传递给包装函数的参数来引用“类”,这让我怀疑这可能是一个upvalue问题。也就是说,load(...)是否为这个块的执行创建了一个闭包,而这个闭包无法到达参数self……但为什么呢?它确实在那里???

无论如何,我的调试器后端已经在 C++ 上了,所以我想“没问题,我只需手动设置upvalue。再次,我尝试使用执行以下操作lua_setupvalue,但这也不起作用。我收到了运行时错误pcall。

luaL_dostring(L, "SomeClass = {}"); // just for convenience; I could've done this manually
luaL_loadstring(L, "print(1)"); // [ ... , loadstring_closure ]
lua_getglobal(L, "SomeClass"); // [ ... , loadstring_closure, reference table]
lua_setupvalue(L, -2, 1); // [ ... , loadstring_closure] this returns '_ENV'
lua_pcall(L, 0, 0, 0); // getting LUA_ERRRUN

我在这里遗漏了什么?也许我完全用错误的方式处理这个问题?我的最终目标只是能够执行这些调试器监视,但仅限于某些类实例,这样我就可以根据每个实例启用监视并检查它们。是的,我绝对需要推出自己的调试器。这是一个很长的故事。任何帮助都值得感激。

debugging
  • 1 个回答
  • 28 Views
Martin Hope
chathuranga siriwardhana
Asked: 2024-07-23 21:26:38 +0800 CST

Ballerina 调试器在我的 Ballerina 项目中仅启动一个服务器

  • 6

我的 Ballerina 项目包含多台服务器。

  1. HTTP 服务器(运行于端口 9095)
  2. GraphQL 服务器(在端口 9090 上运行)

HTTP 服务器充当 GraphQL 服务器的代理服务器。

当我从 VS Code 以调试模式启动 Ballerina 项目时,只有 HTTP 服务器以调试模式启动(即支持调试器断点)。虽然 GraphQL 服务器运行没有问题,但它不支持在调试器断点处暂停。

我想知道如何以调试模式启动 GraphQL 服务器。只为 GraphQL 服务器设置调试模式,而不为 HTTP 服务器设置调试模式,这样就可以了。

编辑:Ballerina 版本:2201.8.3

debugging
  • 1 个回答
  • 42 Views
Martin Hope
SRobertJames
Asked: 2023-09-04 04:51:23 +0800 CST

gdb使用printf显示

  • 5

gdb 可以用来display打印每一步的表达式。我想使用 gdb 格式化表达式printf。我如何告诉 gdb 运行printf每个步骤,类似于显示?

debugging
  • 1 个回答
  • 8 Views
Martin Hope
Gabe Ebag
Asked: 2023-08-29 01:30:00 +0800 CST

为什么 IntelliJ IDEA 删除了强制步入按钮?

  • 6

我正在看一个关于IDEA调试的教程。当我尝试尝试强制进入按钮时,我发现它不存在。快捷键alt + shift + f7仍然有效。

他们为什么删除这个按钮?其背后的必要性是什么?

debugging
  • 1 个回答
  • 15 Views
Martin Hope
DevGary
Asked: 2023-08-17 19:25:32 +0800 CST

如何在服务器端调试 AX 2012 R2

  • 5

我有高度定制的银行对账单功能。传输逻辑从调用 Controller 开始,该控制器从 SysOperationServiceController 扩展。在控制器的 main 方法中,我有这段代码:

public static void main(Args args)
{
    BankStatementTransferController_SI  controller;

    controller = BankStatementTransferController_SI::newFromArgs(args);
    controller.buildQuery();
    controller.startOperation();
    controller.refreshCallerRecord();
}

我能够对此进行调试,直到 startOperation 方法。主要逻辑在其他类中执行,该类扩展自 RunBaseBatch。这两个类都将“RunOn”属性设置为“Called from”。我在两个类中设置了断点,但在controller.BuildQuery()之后,该过程完成并且不会在任何断点处停止。

问题是如何调试这个类?

debugging
  • 1 个回答
  • 16 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve