如何使用 Python PDB 进入生成器函数?

问题描述

假设我有一个使用生成函数的 Python 脚本 public class PremiseAdapter extends RecyclerView.Adapter<PremiseAdapter.ViewHolder> { private ArrayList<Premise> mPremiseData; private Context context; private int selected_position = -1; OnItemClickListener onItemClickListener; public interface OnItemClickListener { void onItemClick(int position); } public void setonItemClickListener(OnItemClickListener itemClickListener) { onItemClickListener = itemClickListener; } public PremiseAdapter(Context context,ArrayList<Premise> mPremiseData) { Log.d("rcvTest","PremiseAdapter.PremiseAdapter"); this.mPremiseData = mPremiseData; this.context = context; } //required method for creating the viewholder objects. @NonNull @Override public PremiseAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) { Log.d("rcvTest","---------------------> PremiseAdapter.ViewHolder.onCreateViewHolder"); return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.list_premises,parent,false),onItemClickListener); } //required method that binds the data to the viewholder. @Override public void onBindViewHolder(@NonNull PremiseAdapter.ViewHolder holder,int position) { // Get current premise. // Populate the textviews with data. } @Override public int getItemCount() { Log.d("rcvTest","PremiseAdapter.getItemCount"); return mPremiseData.size(); } /*----------------------------------- CLASS VIEWHOLDER -------------------------------------------*/ /*----------------------------------- CLASS VIEWHOLDER -------------------------------------------*/ /*class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {*/ class ViewHolder extends RecyclerView.ViewHolder { // Member Variables for the TextViews //Constructor for the ViewHolder,used in onCreateViewHolder(). ViewHolder(@NonNull View itemView,OnItemClickListener listener) { super(itemView); cardView = itemView.findViewById(R.id.cardview_premise); Log.d("rcvTest","[ViewHolder].ViewHolder.TOP"); // Initialize the views. // Set the OnClickListener to the entire view. int clickedColor = Color.parseColor("#D5F5E3"); itemView.setonClickListener((v) -> { int position = getAdapterPosition(); Log.d("rcvTest","[ViewHolder].ViewHolder.listener: " + listener); Log.d("rcvTest","[ViewHolder].ViewHolder.getAdapterPosition(): " + getAdapterPosition()); Log.d("rcvTest","[ViewHolder].ViewHolder.position: " + position); Log.d("rcvTest","getLayoutPosition(): " + getLayoutPosition()); if (position != RecyclerView.NO_POSITION) { Log.d("rcvTest","[ViewHolder].ViewHolder.position != RecyclerView.NO_POSITION"); itemView.setBackgroundColor(clickedColor); } else if (position == RecyclerView.NO_POSITION) { Log.d("rcvTest","[ViewHolder].ViewHolder.position == RecyclerView.NO_POSITION"); itemView.setBackgroundColor(clickedColor); } notifyItemChanged(position); notifyItemChanged(getLayoutPosition()); }); } void bindTo(Premise currentPremise) { // Populate the textviews with data. Log.d("rcvTest","[ViewHolder].bindTo.TOP: " + currentPremise.getPremiseName()); } } }

yieldtest.py

它工作正常。但是假设出了点问题,所以我想调试它。所以我输入:

def yieldfunc():
    yield 2
    yield 4
    yield 8
    yield 16

def main():
    nums = yieldfunc()
    for n in nums:
        print(n)

if __name__ == "__main__":
    main()

然后,当我到达 $ python -m pdb yieldtest.py 行时,我输入 nums = yieldfunc() 并按 Enter,我希望这会带我进入 s,以便我可以看到引擎盖下发生了什么。然而,事实并非如此。相反,它会将我带到 yieldfunc() 中的下一行:

def main()

这意味着我必须对使用 > /...path/yieldtest.py(8)main() -> nums = yieldfunc() (Pdb) s > /...path/yieldtest.py(9)main() -> for n in nums: (Pdb) 的所有函数进行实质上的黑盒测试。

是否有任何使用 PDB 调试器的解决方案可以让我进入生成函数

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...